我在Windows Server 2008 R2上运行ASP.Net应用程序。我已经安装了.NET Framework 4.5。从.NET Framework v2.0迁移到v4.0后,我开始体验WCF的随机行为。WCF随机返回无效的JSON
我的web服务返回JSON。重新启动IIS后,服务将返回完全有效的JSON大约3到5次。之后,JSON变得无效。我已经检查了通过Fiddler传递的信息以及我自己在客户端应用程序(调用服务的Adobe AIR应用程序)和服务器本身上的日志。
Fiddler显示原始响应确实包含无效的JSON。看起来非常多的是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深处的一个bug。有任何想法吗?
我现在唯一的办法是将WCF转换并转换到ServiceStack之类的位置,如果需要的话可以调试到所有代码。
看起来像是某种缓冲的问题,其中一个缓冲区重发,或在一个缓冲区不发送/接收后清零。 –
我不知道任何现有的问题。但是,了解您是否可以发布一段repro代码会很有帮助。 – Praburaj
你有没有试过FailedRequestLogging来查看是否有任何可疑的事情要经过这个过程?您是否尝试过通过JavaScriptSerializer()运行您的返回对象以查看它是否存在故障?如果需要,可以调试到框架中(请参阅:http://msdn.microsoft.com/zh-cn/library/cc667410.aspx)。 – Pete