C# 仅在服务器上使用mvc webgrid时出现间歇性接收故障

C# 仅在服务器上使用mvc webgrid时出现间歇性接收故障,c#,asp.net-mvc,iis,webgrid,C#,Asp.net Mvc,Iis,Webgrid,我在整个应用程序中广泛使用System.Web.Helpers.WebGrid,在大多数情况下它都很好,事实上在本地运行它总是很好,或者在服务器上使用自SSL也很好。所以我不知道问题是否真的可能是IIS或防火墙,或者实际的网格,或者我需要做什么来修复它 在所有浏览器上,虽然结果略有不同,但WebGrid上连续的ajax排序和分页最终会导致它挂起,当我在Fiddler中检查响应时,我得到了 [Fiddler]ReadResponse()失败:服务器未对此请求返回响应 如果我直接复制并粘贴url到浏

我在整个应用程序中广泛使用
System.Web.Helpers.WebGrid
,在大多数情况下它都很好,事实上在本地运行它总是很好,或者在服务器上使用自SSL也很好。所以我不知道问题是否真的可能是IIS或防火墙,或者实际的网格,或者我需要做什么来修复它

在所有浏览器上,虽然结果略有不同,但WebGrid上连续的ajax排序和分页最终会导致它挂起,当我在Fiddler中检查响应时,我得到了

[Fiddler]
ReadResponse()
失败:服务器未对此请求返回响应

如果我直接复制并粘贴url到浏览器中,它会加载,但如果我不断点击F5,我最终会在chrome中收到一条消息,说明“此网页不可用”(错误
103 ERR\u CONNECTION\u中止
)或IE中的“Internet Explorer无法显示网页”

url相当长且复杂,类似于
http://app.myapp.com/mygrid/9e3b2ae5-cbe1-4a4a-a355-a14f00d26e24?mylayout=true&myid=634982439599769687&readonly=False&search=-&__=63498243970807187&sort=Name&dir=ASC

如果在服务器上安装了SSL证书,并且在本地根本没有发生,那么这个问题似乎就消失了


有什么想法吗?

你问题的最后一段

如果安装了SSL证书,这个问题似乎就消失了 在服务器上,并且在本地根本不会发生

立即让我想到了
DEFLATE
GZIP
问题可能存在的问题,知道它们在加密连接上会被禁用,而且很可能在本地连接上也会被禁用,因为您无法真正将同一证书从服务器环境移动到本地开发环境(这将超出他们的目的),并且必须为测试目的创建一个新的自签名证书,如果这是一项要求的话

准确地说,我以前也碰巧在使用.NET 4.0之前的版本4.0.30319.236时遇到过问题。这些问题在以后的.NET 4.0版本中得到了解决,并且可以通过在4.0安装的基础上安装.NET 4.5来避免。如果这是导致问题的原因,那么仍然很难说其他服务器端设置可能导致了这种情况,例如现在已停止使用IIS锁定工具,甚至在启用压缩时不接受冗长的URL请求

TL;DR-无论是哪种情况,明显的结论都是尝试在
Web.config
文件中为这些请求(和/或
httpCompression
)禁用IIS服务器的
urlCompression
,并查看问题是否仍然存在:

<configuration>
   <system.webServer>
      <urlCompression doStaticCompression="false" doDynamicCompression="false" />
   </system.webServer>
</configuration>

这显然是一个黑客解决方案,如果可能的话,应该通过比较服务器和本地环境之间的差异来进一步研究。很可能服务器没有更新所有最新的库,这样做也可以解决这个问题

免责声明:我意识到这并不是一个100%防弹的答案,但OP在评论中指出它确实起到了作用。我昨天也问过,是否有其他人会知道更好的答案,并且知道这些问题会立即被我们的巫师们认识到,但圣帕特里克节似乎让我很快意识到ts收费:)


干杯

您是否在服务器端代码上使用任何会话或其他共享变量?通常是的,但对于网格控制器,我有[SessionState(SessionStateBehavior.ReadOnly)],因此它是只读的,事实上,即使您有[SessionState(SessionStateBehavior.ReadOnly)],也不会从该特定网格的会话中检索任何内容设置它获取会话锁,尽管锁是非独占的(即另一个线程/请求也可以请求写访问)。如果有任何其他请求获得写锁,您的只读请求可能会无限期挂起,如果获得写锁的请求未完成并释放锁,则可能导致问题中描述的情况。此外,根据使用的技术,即使您没有对会话进行读写操作,也可能会在ASP页面生命周期(或任何同等框架)中读取/解析/获取会话。请记住,现代浏览器使用相同的会话标识符/cookie/同时发出多个请求,当其中一个调用未通过时,可能会导致问题。@TitalWave谢谢,这似乎真的解决了问题!-只是在IIS中禁用了“启用动态内容压缩”和“启用静态内容压缩”(可能不需要第二个)