我正在努力更改现有的自托管 ASP.NET Web 应用程序以在 Windows Azure 中运行。我已成功将应用程序部署到 Web 角色,乍一看一切似乎都工作正常。
但是,我很快开始注意到 Javascript 并没有像我预期的那样在许多页面上执行。进一步调查显示,许多页面未完全加载。我一直使用 Firefox(显然它更宽容)并且它呈现部分内容,而 IE 只是显示“页面无法显示”。
运行 fiddler 或 charles,我可以看到由于内容长度不匹配而发生协议(protocol)违规(服务器将内容长度响应 header 设置为一个值,但随后不返回完整内容。
实际返回的内容长度似乎有所不同,因此我无法找到响应长度上限或类似内容的链接。以下是来自 fiddler 的一些示例错误消息:
Fiddler has detected a protocol violation in session #27. Content-Length mismatch: Response Header indicated 26,716 bytes, but server sent 23,138 bytes.
Fiddler has detected a protocol violation in session #47. Content-Length mismatch: Response Header indicated 54,444 bytes, but server sent 32,546 bytes.
Fiddler has detected a protocol violation in session #80. Content-Length mismatch: Response Header indicated 27,152 bytes, but server sent 18,726 bytes.
当使用 Azure 计算模拟器本地运行或在原始本地应用程序中运行时,此行为不会发生在应用程序中 - 仅当部署到 Azure 本身时才会发生。
如果有帮助的话,该 Web 应用程序是在 .NET 3.5 SP1 下运行的 ASP.NET 2.0 应用程序。
关于可能导致此问题的原因有什么想法吗?
最佳答案
我应该早点尝试这个,但在发布这个问题后,我想到了从公司网络外部访问 Azure 中的应用程序,并惊讶地发现我没有遇到上述任何问题。
因此,这将问题范围缩小为我们公司网络的问题,由于某种原因导致该域出现问题。我们的 IT 团队仍在调查根本原因,但我已确认这似乎不是与 Azure 本身相关的问题。
感谢您的回复。
关于asp.net - Windows Azure - 内容长度不匹配的频繁协议(protocol)违规,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8326476/