【发布时间】:2010-10-13 21:55:48
【问题描述】:
当 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;
}
}
}
我的 IClient 是一个实体框架类,因此适当地用 DataContract/DataMember 属性装饰。
我正在尝试使用 Rick Strahl 的博客http://www.west-wind.com/weblog/posts/324917.aspx(“全脂”版本)中概述的方法调用我的 WCF 服务。调试器很好地跳转到 WCF 服务(所以我的 jQuery/JSON 被理解)并获取 IClient 并返回它。但是,当我返回响应时,我会收到各种无用的错误。我回来的错误没有多大意义。
我正在使用 POST。
我使用接口而不是具体对象是否正确?由于它确实进入了 WCF 服务,它似乎确实是失败的结果的编码。
有人有什么想法吗?
【问题讨论】:
-
对于我的问题的编辑,我是英国人,我不会对“行为”使用美国拼写。在这种情况下,“接口”也是一个专有名词,我将使用大写的 I 来表示。
标签: c# jquery wcf json .net-3.5