我正在尝试在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,然后重新安装所有内容。我基本上是在这里做默认设置,所以它必须是简单的。
感谢您的时间......
答案 0 :(得分:86)
我解决了。对于其他有问题的人来说,这就是我所做的。
首先复制问题:我在添加/删除Windows功能菜单中选择“ASP.NET”来安装IIS。这是选择IIS运行.NET应用程序所需的一切,但有趣的是它无法提供静态页面(.html,css,js等)我的测试页面只是一个hello world .html页面,所以这就是为什么它不是没服务。
要解决此问题:要启用静态内容的提供,您必须在相同的“添加/删除Windows功能”列表中专门选择“常见HTTP功能”下的“静态内容”。一旦你这样做我的测试页面工作正常。
总结:我不明白典型的.NET如何在没有静态内容(CSS,图像,Javascript)的情况下运行,所以我不知道为什么MS在选择ASP.NET时默认不包含静态内容。也许我安装IIS的工作流程是错误的。
我确信有一种方法可以跟踪请求流,以查找静态内容请求被阻止,但我不知道该怎么做。
答案 1 :(得分:7)
Matt Cofer的解决方案是正确的:为了查看静态内容,您必须在初始安装期间安装静态内容功能。但是,我发现添加/删除功能对我不起作用:它只显示了一部分功能,与IIS无关。
所以......这是安装静态内容的另一种方法:
Start Menu > type "server manager" in search field > click resulting link
Web Server > Common HTTP Features