我正在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的东西,我可以根据需要调试所有代码。
答案 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