5

我有运行同一个 asp.net 站点的各种服务器(开发、2 x 测试、2 x 产品)。

test 和 prod 服务器是负载平衡的对(prod1 和 prod2,test1 和 test2)。

测试服务器对在大约十分之一的页面加载期间表现出某种(超级)减速或冻结。有时一行文本会出现在页面的最顶部,如下所示:

00 OK Date: Thu, 01 Apr 2010 01:50:09 GMT Server: Microsoft-IIS/6.0 X-Powered_By: ASP.NET X-AspNet-Version:2.0.50727 Cache-Control:private Content-Type:text/html; charset=ut

(开头和结尾被“切断”。)

有没有人见过这样的事情?知道这意味着什么或导致它的原因吗?

编辑: 点击某些东西时我也经常看到这个 - 它在黄页上显示为红色文本:

XML 解析错误:格式不正确
位置:http://203.111.46.211/3DSS/CompanyCompliance.aspx?cid=14
第 1 行,第 24 列:2mmTehON9OUNKySVaJ3ROpN" />
                         ----------------------^

如果我返回并再次单击,它会起作用(我看到的是我单击的页面,而不是上面的错误消息)。

更新:

...而且,有时我只是得到一个白色屏幕,而不是页面加载,黑色的文本是这样的(看起来很像上面的文本):

HTTP/1.1 302 发现日期:2010 年 4 月 21 日星期三 04:53:39 GMT 服务器:Microsoft-IIS/6.0 X-Powered-By:ASP.NET X-AspNet-Version:2.0.50727 位置:/3DSS/EditSections。 ASPX ID = 3&网站ID = 56&sectionId = 46的Set-Cookie:.3DSS = A6CAC223D0F2517D77C7C68EEF069ABA85E9HFYV64F&FA4209E2621B8DCE38174AD699C9F0221D30D49E108CAB8A828408CF214549A949501DAFAF59F080375A50162361E4AA94E08874BF0945B2EF; 路径=/; HttpOnly Cache-Control: private Content-Type: text/html; charset=utf-8 内容长度:184

对象移到这里

“这里”是一个链接,它指向一个 URL,就像我请求的那个一样,除了里面有一个额外的文件夹,意思是:http:
//123.1.2.3/MySite//MySite/Page.aspx?选项=1

而不是:http:
//123.1.2.3/MySite/Page.aspx ?option=1

更新:

我的一位同事发现一些信息说这可能是因为测试服务器在 64 位(64 位 win 2003)中运行 iis(产品服务器是 32 位 win 2003)。

所以我们尝试告诉 IIS 使用 32 位:
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1

%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i

(来自这个 MS 支持页面

但是 iis 完全停止工作(在白页而不是网站上出现“服务器不可用”)。

扭转上述情况(见链接)起初也不起作用。ASP.NET 选项卡从我们的 IIS 网站属性中消失了,我们不得不花一个小时卸载 (aspnet_regiis.exe -u) 并重新安装 32 位 ASP.NET 并将 Default.aspx 手动添加回默认文档。

我们可能会在几天后再试一次,如果有人在此期间有什么要补充的,请补充。

更新: 这似乎与我们迄今为止发现的一切不一致,但我们的测试表明这个问题只发生在 Firefox 中,而不是 IE 或 Chrome (!!??)。

更新:解决方案
对于以后发现此问题的任何人:
根据 Aristos 的建议(请参阅已接受的答案),我们搜索了 HTTP 标头“Content-Length”的代码。有一个设置它页面,一个从数据库中提取图像以显示公司徽标的页面(直接吐出响应,即:而不是链接到说“log56.gif”,您可以链接到“ThisImagePage.aspx ?id=56" 它将提供来自数据库的指定 gif)。
我们注释掉了这一行:

HttpContext.Current.Response.AddHeader("Content-Length", File.Length.ToString());

......它奏效了。如果有人可以看到其中的错误,请告诉我们,否则我猜这是某种 IIS 或负载平衡器配置问题,仅在手动设置二进制文件的内容长度时出现,并且仅在 Firefox 中出现(!?) .

4

4 回答 4

3

MGOwen 我将分享我遇到的类似问题的经验。

前段时间我有一个类似的问题,页面运行良好,除了一些页面在使用 gZipped 压缩后它们有问题并且无法正常工作,就像你的一样。

我发现问题是因为我在标题上设置了Content-Length,然后由于某种原因,什么时候要 gZipped Content-Length,没有改变/或者计算为假,结果是类似的错误你的。

因此,请检查您是否在页面上以某种方式设置了Content-Length,然后使用 gZip 过滤器。如果是,则删除程序中的 Content-Length 设置。

一般来说,我说长度在您的页面上有问题,而长度是Content-Length中的一个变量。

-并且在您的标题中存在 Content-Length !-

更新
另外一个人认为我注意到了,如果您的页面以 gZip 形式发送,那么您的头脑在哪里?如果这是您页面的完整标题。

于 2010-04-27T06:05:32.813 回答
1

您看到的文本是页眉。我猜它和 xml 解析错误都是由于浏览器的输出被切断,或者更奇怪的是,只有响应中的一个块被中继。

我将从负载均衡器开始,看看是否有可用的日志。之后,我会尝试禁用 Aristos 提到的 IIS 压缩,看看是否有影响(在 IIS 中获取“网站”文件夹中的属性,然后转到“服务”选项卡或查看是否启用/更改了压缩该特定站点)。

在那之后,您可能不得不求助于某种数据包嗅探器来查看平衡器两侧实际发送的内容。

于 2010-04-23T19:13:09.163 回答
1

机器是否共享相同的机器密钥?
这与访问会话状态一起可能会导致奇怪的错误。

于 2010-04-26T19:20:48.083 回答
0

这个问题似乎与 IIS 和 .net 有关。

如果您使用的是 .NET 2.0 框架,请单击开始 -> 运行并键入以下命令:%Windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -i

此处详细讨论:http: //social.msdn.microsoft.com/Forums/en-US/xmlandnetfx/thread/47f6eb6a-b062-4f4d-8b7f-b4afb1b2725d

于 2010-04-06T06:15:58.137 回答