【问题标题】:Ajax Enabled WCF service not responding with data启用 Ajax 的 WCF 服务未响应数据
【发布时间】:2011-04-15 19:34:09
【问题描述】:

我有一个非常简单的启用 Ajax 的 WCF 服务,它应该返回一个 EntityObject 类型的实体,序列化为 JSON。

这是我的 .svc 文件:

[ServiceContract(Namespace = "FASServices")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class FASService
{
    [OperationContract, WebGet(ResponseFormat=WebMessageFormat.Json)]
    public FrameAttributes GetFrameAttributes(long frameID)
    {
        var data = FrameAttributeAccessor.GetFrameAttributes(frameID);

        WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Json;

        return data;
    }
}

我已通过 ScriptManager 上的服务引用在 ASP.Net 页面中使用此服务,并访问了由此生成的服务代理。

这是我的 web.config:

 <system.serviceModel>
  <behaviors>
   <endpointBehaviors>
    <behavior name="FASAdmin.FASServiceAspNetAjaxBehavior">
     <enableWebScript />
    </behavior>
   </endpointBehaviors>
  </behaviors>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  <services>
   <service name="FASAdmin.FASService">
    <endpoint address="" behaviorConfiguration="FASAdmin.FASServiceAspNetAjaxBehavior"
     binding="webHttpBinding" contract="FASAdmin.FASService" />
   </service>
  </services>
 </system.serviceModel>

调用服务时,我可以看到 XHR 离开了我的浏览器(通过 FireBug),还可以看到 ASP.Net 开发服务器接收到 HTTP 请求并随后调用服务,该服务使用传递的业务密钥执行简单查找我的数据访问层(我在上面的 return 语句上有一个断点,可以检查返回的实体)。

但是,一旦控制离开我的服务代码并返回,就永远不会向我的浏览器发送响应,随后也永远不会收到 JSON 序列化数据,甚至没有任何响应标头要检查。

有人知道为什么会这样吗? 谁能提供任何技术来调试 WCF 堆栈以端到端跟踪消息?

提前致谢。

【问题讨论】:

    标签: .net asp.net-ajax wcf


    【解决方案1】:

    How to trace WCF serialization issues / exceptions,即您必须启用 WCF 诊断跟踪。

    【讨论】:

    • 此答案中指向 WCF 跟踪的链接帮助我跟踪并找到了序列化错误。干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    相关资源
    最近更新 更多