Я правильно пытаюсь получить этот "волшебный" момент, когда WCF настроен красиво, и jQuery хорошо структурирует свои запросы/понимает ответы.
У меня есть служба:
<%@ ServiceHost Language="C#" Debug="true" Service="xxx.yyy.WCF.Data.ClientBroker" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>
Это было рекомендовано человеком Rick Strahl, чтобы избежать необходимости определять поведение в Web.config.
Мой интерфейс для службы WCF находится в другой сборке:
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);
}
}
Конкретный класс сервиса:
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;
}
}
}
My IClient - это класс Entity Framework, поэтому он соответствующим образом украшен атрибутами DataContract/DataMember.
Я пытаюсь вызвать службу WCF, используя методы, описанные в блоге Rick Strahl, в http://www.west-wind.com/weblog/posts/324917.aspx (версия "полный жир" ). Отладчик переходит в режим обслуживания WCF (поэтому мой jQuery/JSON понимается) и получает IClient и возвращает его. Однако, когда я возвращаю ответ, я получаю различные бесполезные ошибки. Ошибки, которые я возвращаю, мало что значит.
Я использую POST.
Можно ли использовать интерфейс вместо конкретного объекта? Поскольку он попадает в службу WCF, он, похоже, является кодировкой результата, который терпит неудачу.
Есть ли у кого-нибудь идеи?