Je suis en train de lutter pour obtenir ce moment magique lorsque le WCF est bien configuré et que jQuery structure bien ses requêtes/compréhension des réponses.JQuery/WCF sans ASP.NET AJAX:
J'ai un service:
<%@ ServiceHost Language="C#" Debug="true" Service="xxx.yyy.WCF.Data.ClientBroker" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>
Cela a été recommandé par l'homme Rick Strahl pour éviter d'avoir à définir les comportements au sein Web.config.
Mon interface pour le service WCF se trouve dans un autre ensemble:
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 classe de service concret est:
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;
}
}
}
Mon iClient est une classe Entity Framework ainsi est décorée avec des attributs DataContract/de DataMember de manière appropriée.
J'essaie d'appeler mon service WCF en utilisant les méthodes décrites sur le blog de Rick Strahl au http://www.west-wind.com/weblog/posts/324917.aspx (la version «complète»). Le débogueur saute dans le service WCF (donc mon jQuery/JSON est compris) et obtient l'IClient et le renvoie. Cependant, quand je retourne la réponse, j'obtiens plusieurs erreurs inutiles. Les erreurs que je reçois ne signifient pas grand-chose.
J'utilise POST.
Ai-je raison d'utiliser une interface au lieu d'un objet concret? Comme il arrive dans le service WCF, il semble que ce soit l'encodage du résultat qui échoue.
Quelqu'un a-t-il des idées?
Merci Darin, Il s'avère que mon problème est avec JSON sérialisation des objets Entity Framework (blogged: http://tinyurl.com/cc4k37). Mais votre conseil à propos de SvcTraceViewer était inestimable en me rappelant cet excellent outil et en repérant l'exception. Aussi: D'accord sur REST pour certaines méthodes, mais pas cette 1! –