10

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

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

[Fiddler]ReadResponse()失败:服务器没有为此请求返回响应。

如果我将 url 直接复制并粘贴到浏览器中,它将加载,但如果我不断按 F5,我最终会在 chrome 中收到一条消息,指出“此网页不可用”(带有 Error 103 ERR_CONNECTION_ABORTED)或“Internet Explorer 无法显示网页” IE。

网址相当长且令人费解,例如http://app.myapp.com/mygrid/9e3b2ae5-cbe1-4a4a-a355-a14f00d26e24?mylayout=true&myid=634982439599769687&readonly=False&search=-&__=634982439708207187&sort=Name&dir=ASC

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

有任何想法吗?

4

1 回答 1

6

你问题的最后一段

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

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

我也碰巧在之前的 .NET 4.0 版本 4.0.30319.236 之一之前偶然发现GZipStream 或 DeflateStream 问题中可能会发生无限循环。这些问题已在以后的 .NET 4.0 版本中得到解决,并且可以通过在 4.0 安装之上安装 .NET 4.5 来避免。如果这就是导致您的问题的原因,那么仍然很难说,并且可能是其他一些服务器端设置导致了它,例如现在停止使用 IIS Lockdown Tool,甚至URLScan在启用压缩时不接受冗长的 URL 请求。

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

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

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

免责声明:我意识到这并不是一个 100% 防弹的答案,但是 OP 在评论中建议它成功了。我昨天也在DMZ上发布了这个问题和一个可能的答案,询问其他人是否会知道更好的答案,并且知道我们的IT 安全向导会立即识别这些问题,但圣帕特里克节似乎已经过去了它的收费:)

干杯!

于 2013-03-18T19:52:58.617 回答