WCF web service: response is 200/ok, but response body is empty

Posted by user1021224 on Stack Overflow See other posts from Stack Overflow or by user1021224
Published on 2011-10-31T02:02:11Z Indexed on 2011/11/12 17:50 UTC
Read the original article Hit count: 360

Filed under:
|
|
|
|

I am creating a WCF web api service. My problem is that some methods return a 200/OK response, but the headers and the body are empty.

In setting up my web service, I created an ADO.NET Entity Data Model. I chose ADO.NET DbContext Generator when I added a code generation item. In the Model.tt document, I changed HashSet and ICollection to List. I built my website.

It used to be that when I coded a method to return a List of an entity (like List<Customer> or List<Employee> in the Northwind database), it worked fine. Over time, I could not return a List of any of those, and could only grab one entity. Now, it's gotten to a point where I can return a List<string> or List<int>, but not a List or an instance of any entity. When I try to get a List<AnyEntity>, the response is 200/OK, but the response headers and body are empty.

I have tried using the debugger and Firefox's Web Console. Using FF's WC, I could only get an "undefined" status code. I am not sure where to go from here.

EDIT: In trying to grab all Areas from the database, I do this:

[WebGet(UriTemplate = "areas")]
public List<a1Areas> AllAreas()
{
    return context.a1Areas.ToList();
}

I would appreciate any more methods for debugging this. Thanks in advance.

Found the answer, thanks to Merlyn!

In my Global.asax file, I forgot to comment out two lines that took care of proxies and disposing of my context object. The code is below:

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();
  }
}

© Stack Overflow or respective owner

Related posts about c#

Related posts about ASP.NET