IIS7.5问题上的ASP经典导致响应头出现在正文中

时间:2012-08-17 05:59:41

标签: asp-classic iis-7.5

我最近在Windows 2008 R2上将经典的ASP Web应用程序从IIS 6移到了IIS 7.5。这个站点在IIS 6上运行了4年多。在大多数情况下,该站点在IIS 7.5上运行良好,但是,当您加载页面时,某些事情发生在浏览器未正确处理响应的地方。因此,实际响应标头会在<html>标记之前或</html>标记之后在响应正文中返回。当响应位于<html>标记之前的顶部时,最终用户会在浏览器中看到它。

标题位于<html>标记上方的示例响应:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 9714
Content-Type: text/html
Server: Microsoft-IIS/7.5
P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
Set-Cookie: CSB=UserType=3&Client=805157&FNAME=John+Doe&CAMS=False&Client%5FUser%5FMode=Online&Session=650680780&User=1&LastViewed=https%3A%2F%2Fsite%2Edomain%2Ecom%2Fcsb%2Fclient%2Fdefault%2Easp%3FClient%3D123456%26PBAT%3D654321%26BAT%3D654321&Username=jjd; path=/
X-Powered-By: ASP.NET
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
        <title>some page</title>
        <script>...</script>
    </head>
    <body>
    </body>
</html>

响应标题的内容实际上是在浏览器的屏幕上呈现的。每个请求都不会发生此问题。我已经成功地在IE和Chrome中重现了这个问题,但它是随机的,所以我一直在努力追查根本原因。

有时标题会打印在</html>标记下方,并且不会在浏览器中呈现。

IIS或ASP不会抛出任何错误。我找到了this,我尝试在IIS中使用跟踪失败的请求模块,它没有帮助,因为请求实际上没有失败,所以没有什么可追踪的。

我已经尝试过观察Fiddler中的流量,但我得到的是响应大小大于头部声明的警告,这是因为实际响应头文本与响应主体一起返回。 / p>

服务器正在运行Windows防火墙和eset防病毒软件 - 但两者都在旧的IIS 6机箱上运行。

在配置IIS方面,我已经完成了人们推荐用于运行经典ASP的所有基础知识。

在IIS配置方面,我不是初学者,但这是我真正合作的唯一ASP网站,而我所要做的就是让它在新设置上正常运行。

我被困住了,之前有没有人看过这个?

2 个答案:

答案 0 :(得分:1)

这是一个ISAPI过滤器的问题,该过滤器是由我们安装的有bug的Web应用程序防火墙引入的。虽然我们在禁用ISAPI过滤器的情况下进行了测试,但事实证明我们必须完全删除ISAPI才能发现问题。此后,供应商向我们提供了修补该错误的补丁。谢谢你的帮助!

答案 1 :(得分:0)

试试这个:

Response.Buffer=True

让我知道它是否适合你...

了解更多信息。在Response.Buffer上看到http://www.w3schools.com/asp/met_clear.asp

或尝试下面的代码之一。 (逐一查看它们是否有效)

Response.Clear()
Response.ClearHeaders()
Response.Flush()
Response.End()
Response.AddHeader "Content-Length", "838100"

祝你好运......