6

我在 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.exe和运行。aspnet_regiis.exe相同的行为。如果我恢复到 v2.0 下的先前代码并将应用程序池切换回 v2.0,那么一切正常。

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

在这一点上,我唯一的办法是去掉 WCF 并切换到 ServiceStack 之类的东西,如果需要,我可以在其中调试所有代码。

4

2 回答 2

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>
于 2013-04-19T10:28:43.310 回答
0

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

参考这个... 混合两个响应

于 2014-04-03T19:23:17.747 回答