5

我正在创建一个 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();
  }
}
4

0 回答 0