WCF随机返回无效的JSON

时间:2012-11-07 01:11:47

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

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

我的网络服务返回JSON。重新启动IIS后,该服务将返回完全有效的JSON约3至5次。之后,JSON变为无效。我已经通过Fiddler和我自己的客户端应用程序(一个调用该服务的Adobe 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下的先前代码并将App Pool切换回v2.0,那么一切正常。

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

此时我唯一的办法就是撕掉WCF并切换到类似ServiceStack的东西,我可以根据需要调试所有代码。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

参考这个...... Mix up two responses