Sto lottando bene per ottenere quel momento "magico" in cui WCF è configurato bene e jQuery sta strutturando le sue richieste/risposte di comprensione in modo corretto.JQuery/WCF senza ASP.NET AJAX:
Ho un servizio:
<%@ ServiceHost Language="C#" Debug="true" Service="xxx.yyy.WCF.Data.ClientBroker" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>
Questo è stato consigliato da un uomo Rick Strahl per evitare di dover definire i comportamenti all'interno di web.config.
mia interfaccia per il servizio WCF si trova in un altro assembly:
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 di servizio concreto è:
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;
}
}
}
mio iClient è una classe Entity Framework così è decorato con attributi/DataMember DataContract appropriatamente.
Sto provando a chiamare il servizio WCF utilizzando i metodi descritti nel blog di Rick Strahl allo http://www.west-wind.com/weblog/posts/324917.aspx (la versione "full fat"). Il debugger salta nel servizio WCF bene (quindi il mio jQuery/JSON viene compreso) e ottiene l'IClient e lo restituisce. Tuttavia, quando restituisco la risposta, ottengo vari errori inutili. Gli errori che sto recuperando non significano molto.
Sto usando POST.
Ho ragione di utilizzare un'interfaccia invece di un oggetto concreto? Come entra nel servizio WCF, sembra essere la codifica del risultato che sta fallendo.
Qualcuno ha qualche idea?
Grazie a Darin, si scopre che il mio problema è con la serializzazione JSON degli oggetti Entity Framework (bloggato: http://tinyurl.com/cc4k37). Ma il tuo suggerimento su SvcTraceViewer è stato inestimabile nel ricordarmi di questo grande strumento e anche di individuare l'eccezione. Inoltre: concordato su REST per alcuni metodi, solo non questo 1! –