我最近在 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 没有引发错误。我发现了这一点,并尝试在 IIS 中使用跟踪失败的请求模块,但它没有帮助,因为请求实际上并没有失败,所以没有什么可跟踪的。
我试过在 Fiddler 中查看流量,但我得到的只是响应大小大于标头声明的警告,这是因为实际的响应标头文本与响应正文一起返回。
服务器正在运行 Windows 防火墙和 eset 防病毒软件 - 但两者也在旧的 IIS 6 机器上运行。
在配置 IIS 方面,我已经完成了人们推荐的运行经典 ASP 的所有基础知识。
在 IIS 配置方面,我不是初学者,但这是我真正使用的唯一 ASP 站点,我要做的就是让它在新设置上正常运行。
我被卡住了,有没有人以前见过这个?