Win7 Prof. 64bit 下的IIS 7.5 返回空白页(根本没有HTML)
Posted
技术标签:
【中文标题】Win7 Prof. 64bit 下的IIS 7.5 返回空白页(根本没有HTML)【英文标题】:IIS 7.5 under Win7 Prof. 64bit Returning Blank Page (No HTML at all) 【发布时间】:2009-09-17 17:11:27 【问题描述】:我正在尝试在 Windows7 中设置我的开发环境,但无法让 IIS 正常工作。我已经像自 IIS6 以来所做的那样设置了所有内容,所以我已经掌握了基础知识。我的问题一定是在 IIS7 和 IIS7.5 之间或操作系统中发生了变化。
我的网站都不会返回 html。不是默认站点,也不是新添加的站点。
如果我
telnet localhost 80
然后在空白屏幕上
GET / <enter>
我什么也没得到,没有一个标题或 HTML 元素。
如果我输入垃圾而不是 GET 请求,我会得到以下 HTML:
HTTP/1.1 400 Bad Request Content-Type:
text/html; charset=us-ascii Server:
Microsoft-HTTPAPI/2.0 Date: Thu, 17
Sep 2009 17:04:01 GMT Connection:
close Content-Length: 326
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML><HEAD><TITLE>Bad
Request</TITLE> <META
HTTP-EQUIV="Content-Type"
Content="text/html;
charset=us-ascii"></HEAD>
<BODY><h2>Bad Request - Invalid
Verb</h2> <hr><p>HTTP Error 400. The
request verb is invalid.</p>
</BODY></HTML>
这证明了 IIS 存在并处理端口 80 上的请求。
在我的 IIS 日志路径中,我根本没有文件。因此,无论出于何种原因,都没有写入日志。
如果我在 IIS 管理器中查看网站上的基本设置,然后单击测试连接按钮,我会收到与权限相关的错误:
服务器配置为使用 直通身份验证 用于访问的内置帐户 指定的物理路径。然而,IIS 经理无法验证是否 内置帐户具有访问权限。确保 应用程序池标识具有 对物理路径的读取权限。如果 此服务器已加入域,并且 应用程序池标识是 NetworkService 或 LocalSystem,验证 那 \$ 有 对物理路径的读取权限。然后 再次测试这些设置。
我的 AppPool 作为 ApplicationPoolIdentity 运行,这似乎不是真正的用户,所以我不能授予 ApplicationPoolIdentity 文件权限。作为测试,我做了给 IIS_IUSR 和我能找到的对路径的完全访问权限的其他所有人。
到目前为止,无论我做了什么,我都没有看到 IIS 说权限是正确的。但是,我也从未见过错误,尤其是权限错误(300s)。
那么,有什么想法吗?我试图完全删除 IIS,c:\inetpub 然后重新安装所有东西。我这里基本上是做默认设置,所以一定很简单。
感谢您的宝贵时间...
【问题讨论】:
【参考方案1】:我解决了。对于其他遇到问题的人,这就是我所做的。
首先要复制问题:我通过在“添加/删除 Windows 功能”菜单中选择“ASP.NET”来安装 IIS。这是选择 IIS 运行 .NET 应用程序所需的一切,但有趣的是它不能提供静态页面(.html、css、js 等)。我的测试页面只是一个 hello world .html 页面,所以这就是它的原因'没有被送达。
要修复它:要启用静态内容的服务,您必须在同一添加/删除 Windows 功能列表中的通用 HTTP 功能下专门选择“静态内容”。一旦你这样做了,我的测试页就可以正常工作了。
总而言之:我不明白没有静态内容(CSS、图像、javascript)的典型 .NET 将如何运行,所以我不知道为什么 MS 在选择 ASP.NET 时默认不包含静态内容.也许我安装 IIS 的工作流程是错误的。
我确信有一种方法可以跟踪请求流以发现静态内容请求被阻止,但我不知道该怎么做。
【讨论】:
很棒的信息,刚刚遇到了同样的问题,这解决了它:-) Windows 2008 R2 上的 FWIW 我得到的症状略有不同:它会返回一个有效的 HTTP 标头,HTTP 200 OK 和 content-length 0。但启用静态内容修复了它。 @Matt 很棒的信息在这里。虽然这会让人头疼:) 我知道这是旧的,但另一个竖起大拇指。这也解决了我的问题。 :) 我还需要添加 HTTP 错误代码才能接收错误页面。这很愚蠢。 :P【参考方案2】:Matt Cofer 的解决方案是正确的:要查看静态内容,您必须在初始安装期间安装静态内容功能。但是,我发现添加/删除功能对我不起作用:它只显示了一部分功能,与 IIS 无关。
所以...这是另一种安装静态内容的方法:
-
打开服务器管理器
Start Menu > type "server manager" in search field > click resulting link
展开角色节点
右键单击Web Server (IIS)节点以查看上下文菜单
从上下文菜单中选择添加角色服务
添加角色服务窗口打开时,导航到Web Server > Common HTTP Features
启用静态内容
点击下一步
【讨论】:
Windows 7 Professional 不附带服务器管理器。对于 Win 7 Pro,您需要使用“控制面板”>“程序和功能”中的“打开或关闭 Windows 功能”。以上是关于Win7 Prof. 64bit 下的IIS 7.5 返回空白页(根本没有HTML)的主要内容,如果未能解决你的问题,请参考以下文章
win7 64bit下最新Apahe2.4.18+php7.0.2+MySQL5.7.10配置