我的服务界面是:
[ServiceContract]
public interface IMyService
{
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "HelloJSON/{name}")]
string HelloJSON(string name);
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "GetEmployees")]
List<Employee> GetEmployees();
}
我的实施是:
public class MyService : IMyService
{
public string HelloJSON(string name)
{
return string.Format("Hello {0} in JSON", name);
}
public List<Employee> GetEmployees()
{
using (DBEntities ctx = new DBEntities())
{
List<Employee> emp = new List<Employee>();
emp = (from e in ctx.Employee select e).ToList();
return emp;
}
}
}
当我调用第一种方法时,我得到类似“Hello in Pepe in JSON”的内容,没关系。
当我调用第二种方法并在行“return emp”上设置断点时我得到了员工的清单(数据库中有6条记录),但在IE中我得到了这个:
Internet Explorer无法显示网页
在Firefox中进行测试我得到的是一个空白页面,空白,没有HTML,没有数据,没有错误。
我认为WCF无法序列化我的默认EF4实体。
编辑:
我的最终解决方案是(不完全)这样的东西:
static string SerializeJSON<T>(T obj) {
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(obj); }
答案 0 :(得分:1)
答案 1 :(得分:0)
最好的方法是启用RIA服务并公开JSON端点,它可以正确地完成所有操作。