我正在创建一个 WCF web api 服务。我的问题是某些方法返回 200/OK 响应,但标题和正文是空的。
在设置我的 Web 服务时,我创建了一个 ADO.NET 实体数据模型。我在添加代码生成项时选择了 ADO.NET DbContext Generator。在 Model.tt 文档中,我将 HashSet 和 ICollection 更改为 List。我建立了我的网站。
过去,当我编写一个方法来返回一个实体的列表(如List<Customer>
或List<Employee>
在 Northwind 数据库中)时,它工作得很好。随着时间的推移,我无法返回其中任何一个的列表,只能抓取一个实体。现在,我可以返回一个List<string>
or List<int>
,但不能返回 List 或任何实体的实例。当我尝试获取 aList<AnyEntity>
时,响应为 200/OK,但响应标头和正文为空。
我尝试过使用调试器和 Firefox 的 Web 控制台。使用 FF 的 WC,我只能得到一个“未定义”的状态码。我不知道从这里去哪里。
编辑:在尝试从数据库中获取所有区域时,我这样做:
[WebGet(UriTemplate = "areas")]
public List<a1Areas> AllAreas()
{
return context.a1Areas.ToList();
}
我将不胜感激任何更多的调试方法。提前致谢。
找到答案了,感谢梅林!
在我的 Global.asax 文件中,我忘记注释掉处理代理和处理我的上下文对象的两行。代码如下:
void Application_BeginRequest(object sender, EventArgs e)
{
var context = new AssignmentEntities();
context.Configuration.ProxyCreationEnabled = false;
HttpContext.Current.Items["_context"] = context;
}
void Application_EndRequest(object sender, EventArgs e)
{
var context = HttpContext.Current.Items["_context"] as AssignmentEntities;
if (context != null)
{
context.Dispose();
}
}