【问题标题】:Invalid JSON being randomly returned by WCFWCF 随机返回的 JSON 无效
【发布时间】:2012-11-07 01:11:47
【问题描述】:

我正在 Windows Server 2008 R2 上运行 ASP.Net 应用程序。我最多安装了 .NET Framework 4.5。从 .NET Framework v2.0 迁移到 v4.0 后,我开始体验 WCF 的随机行为。

我的网络服务返回 JSON。重新启动 IIS 后,该服务将返回大约 3 到 5 次完全有效的 JSON。之后,JSON 变为无效。我已经检查了通过 Fiddler 传输的内容以及我自己在客户端应用程序(调用服务的 Adob​​e AIR 应用程序)和服务器本身上的日志。

Fiddler 显示原始响应确实包含无效的 JSON。似乎 JSON 中的某个随机点开始再次写出响应 JSON!,覆盖应该存在的内容并在此过程中产生损坏的 JSON。

请参阅此串联示例:

{"responseCode":0,"actionCode":"OK","cdn{"responseCode":0, "actionCode".....

请注意“responseCode”(它应该只出现在 JSON 响应的开头)是如何突然再次出现在 JSON 中的。 "cdn{"responseCode":0 当然是无效的 JSON。

我尝试了很多补丁。我尝试过在不同的框架下以不同的组合运行 ServiceModelReg.exeaspnet_regiis.exe。相同的行为。如果我恢复到 v2.0 下的先前代码并将应用程序池切换回 v2.0,那么一切正常。

我认为这是 WCF 中的一个错误。有任何想法吗?

此时我唯一的办法是删除 WCF 并切换到 ServiceStack 之类的东西,如果需要,我可以在其中调试所有代码。

【问题讨论】:

  • 看起来像是某种缓冲问题,缓冲区被重新传输,或者缓冲区在传输/接收后没有被清除。
  • 我不知道这方面存在任何问题。但是,如果您可以发布一段重现代码,这将很有帮助。
  • 您是否尝试过 FailedRequestLogging 以查看该过程是否有任何可疑之处?您是否尝试过通过 JavaScriptSerializer() 运行返回对象以查看其中是否存在故障?如果需要,您可以调试到框架中(请参阅:msdn.microsoft.com/en-us/library/cc667410.aspx)。
  • 您是否使用了一些自定义消息检查器 (IDispatchMessageInspector) 或类似的东西可能会破坏响应?
  • 您是否也尝试过 SvcTraceViewer.exe msdn.microsoft.com/en-us/library/ms732023.aspx)?

标签: .net json wcf iis aspnet-regiis.exe


【解决方案1】:

遇到了完全相同的问题。我通过从我的 web.config 中删除这两个条目来解决这个问题:

<system.serviceModel>
    <diagnostics>
        <messageLogging logEntireMessage="true" logMessagesAtTransportLevel="true" maxSizeOfMessageToLog="-1" maxMessagesToLog="-1" />
    </diagnostics>
</system.serviceModel>

<system.diagnostics>
    <sources>
        <source name="System.ServiceModel.MessageLogging">
            <listeners>
                <add name="messages" type="MyCustomListener" />
            </listeners>
        </source>
    </sources>
</system.diagnostics>

【讨论】:

  • 上面的一些解决方案和 cmets 可能有效。我不知道。我的最终解决方案是放弃 WCF 并使用 Service Stack。到目前为止,我发现它是实现 Web 服务的卓越架构。
【解决方案2】:

您是否将 InstanceContextMode 设置为 Single/PerSession?

参考这个... Mix up two responses

【讨论】:

    猜你喜欢
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 2018-11-17
    • 2017-04-15
    • 1970-01-01
    相关资源
    最近更新 更多