Me cuesta mucho conseguir ese momento "mágico" cuando WCF está configurado muy bien y jQuery estructura sus solicitudes/respuestas de comprensión muy bien.JQuery/WCF sin ASP.NET AJAX:
que tienen un servicio:
<%@ ServiceHost Language="C#" Debug="true" Service="xxx.yyy.WCF.Data.ClientBroker" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>
Este fue recomendado por el hombre Rick Strahl para evitar tener que definir los comportamientos dentro Web.config.
Mi interfaz para el servicio WCF se sienta en otro montaje:
namespace xxx.yyy.WCF.Data
{
[ServiceContract(Namespace = "yyyWCF")]
public interface IClientBroker
{
[OperationContract]
[WebInvoke(Method="POST",BodyStyle=WebMessageBodyStyle.Wrapped,ResponseFormat=WebMessageFormat.Json)]
IClient GetClientJson(int clientId);
}
}
La clase de servicio concreto es:
namespace xxx.yyy.WCF.Data
{
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
class ClientBroker : IClientBroker
{
public IClient GetClientJson(int clientId)
{
IClient client=new Client();
// gets and returns an IClient
return client;
}
}
}
Mi iClient es una clase Entity Framework así está decorado con atributos/DataMember DataContract adecuadamente.
Estoy tratando de llamar a mi servicio WCF utilizando los métodos descritos en el blog de Rick Strahl al http://www.west-wind.com/weblog/posts/324917.aspx (la versión "full fat"). El depurador salta a la multa del servicio WCF (para que se entienda mi jQuery/JSON) y obtiene el IClient y lo devuelve. Sin embargo, cuando devuelvo la respuesta, obtengo varios errores inútiles. Los errores que estoy recibiendo no significan mucho.
Estoy usando POST.
¿Es correcto utilizar una interfaz en lugar de un objeto concreto? A medida que ingresa al servicio WCF, parece ser la codificación del resultado que está fallando.
¿Alguien tiene alguna idea?
Gracias Darin, Resulta que mi problema es con JSON serialización de objetos Entity Framework (blogged: http://tinyurl.com/cc4k37). Pero su consejo sobre SvcTraceViewer fue invaluable al recordarme esta gran herramienta y también detectar la excepción. Además: acordó REST para algunos métodos, ¡pero no este 1! –