【发布时间】: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 传输的内容以及我自己在客户端应用程序(调用服务的 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 下的先前代码并将应用程序池切换回 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