2011-10-31 11 views
5

Estoy creando un servicio de API web WCF. Mi problema es que algunos métodos devuelven una respuesta 200/OK, pero los encabezados y el cuerpo están vacíos.servicio web WCF: la respuesta es 200/ok, pero el cuerpo de respuesta está vacío

Al configurar mi servicio web, creé un Modelo de datos de entidad ADO.NET. Elegí ADO.NET DbContext Generator cuando agregué un elemento de generación de código. En el documento Model.tt, cambié HashSet e ICollection a List. Construí mi sitio web

Solía ​​ser que cuando codifiqué un método para devolver una Lista de una entidad (como List<Customer> o List<Employee> en la base de datos Northwind), funcionó bien. Con el tiempo, no pude devolver una lista de ninguno de ellos, y solo pude tomar una entidad. Ahora, ha llegado al punto en el que puedo devolver un List<string> o List<int>, pero no una lista o una instancia de ninguna entidad. Cuando trato de obtener un List<AnyEntity>, la respuesta es 200/OK, pero los encabezados de respuesta y el cuerpo están vacíos.

He intentado usar el depurador y la consola web de Firefox. Usando el WC de FF, solo pude obtener un código de estado "indefinido". No estoy seguro de a dónde ir desde aquí.

EDIT: Al tratar de agarrar todas las zonas de la base de datos, hago esto:

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

Agradecería cualquier métodos más para la depuración de esto. Gracias por adelantado.

¡Encontré la respuesta, gracias a Merlyn!

En mi archivo Global.asax, olvidé comentar dos líneas que se encargaban de los proxies y deshacerse de mi objeto de contexto. El código es el siguiente:

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

¿Vuelve entidades directamente al cliente? Es posible que esto no funcione de la forma que esperaría, debido a los proxies de la entidad/carga diferida. ¿Puedes proporcionar algún código para tus métodos de servicio? Además, Fiddler es una buena herramienta para las solicitudes de depuración. Tomar datos de solicitudes y respuestas fuera de allí y pegarlos en la pregunta también podría ser útil. –

+0

¡Gracias por la información! :) ¿Cómo se crea/elimina su contexto? –

+0

¡Hola! Sí, devuelvo las entidades directamente al cliente. En cuanto al uso de Fiddler, la respuesta fue: HTTP/1.1 504 Fiddler - Recibir falla Tipo de contenido: text/html; charset = UTF-8 Conexión: cerrar Marca de tiempo: 22: 49: 24.129 Error de lectura(): El servidor no devolvió una respuesta para esta solicitud. – daoberes

Respuesta

Cuestiones relacionadas