![IIS 7.5 无法加载静态 html 页面](https://linux22.com/image/549781/IIS%207.5%20%E6%97%A0%E6%B3%95%E5%8A%A0%E8%BD%BD%E9%9D%99%E6%80%81%20html%20%E9%A1%B5%E9%9D%A2.png)
专用服务器上新安装了 IIS 7.5。ASP.NET 4.0 Web 应用程序已复制到其文件夹中,新网站在其自己的 IP 上创建于帖子 80 上,IIS_IUSR 和 IUSR 帐户对站点文件夹具有读取/执行权限,该站点被分配到其自己的集成应用程序池,其中包含 4.0 .NET(我尝试了经典池,结果相同)。
问题:当我尝试访问此网站时,浏览器仅加载由 .NET 资源生成的内容,例如 aspx 页面、.axd 文件等。静态图像、静态 js、css 和 html 文件位于页面源中,但 IIS 不提供它们。所有浏览器中的开发工具都抱怨服务器发送的所有这些静态资源的内容类型错误(纯文本而不是图像、样式等)。我做错了什么?
答案1
IIS 7/7.5 有一项新“功能” - 角色服务。rsbarro 的帖子提醒我,有一个角色服务负责静态内容。它是 Web 服务器/通用 HTTP 功能/静态内容。按照 rsbarro 的建议,检查 IIS 管理器中是否存在 MIME 类型图标。
如果没有,您需要安装静态内容角色服务。为此,请选择:
- 服务器管理器
- 角色
- 左侧窗格中的 Web 服务器 (IIS) 节点
- 滚动到角色服务窗口
- 查看静态内容角色服务是否已安装。
根据您的描述,这似乎是您的问题。
一般来说,如果 IIS7 没有执行 IIS6 执行的操作,则首先要检查是否安装了相应的角色服务。希望这能有所帮助。
答案2
在 IIS 下,转到您的网站并检查 MIME 类型部分(见下图)。确保您在该列表中看到 .js、.css、.html 等条目,并且它们指定了正确的 MIME 类型。如果指定了 MIME 类型,IIS 7.5 将只提供页面。默认情况下,这些扩展的 MIME 类型设置在文件夹applicationHost.config
中的文件中(您可能需要以管理员身份运行记事本才能查看该文件)。只需搜索 .js,您就会在元素下C:\Windows\system32\inetsrv\config
找到一个条目。<mimeMap>
<staticContent>
这些设置可以在您的web.config
文件中被覆盖。如果被覆盖,它们将出现在以下位置web.config
:
<system.webServer>
<staticContent>
<remove fileExtension=".js" />
</staticContent>
</system.webServer>
我肯定会从那里开始检查。如果 MIME 类型部分下一切正常,那么可能有一个模块正在干扰对静态文件的请求(但很可能只有在您已在部分<modules runAllManagedModulesForAllRequests="true" />
中设置的情况下才会<system.webServer>
发生)。如果是这种情况,我会删除您设置的所有模块,看看您是否可以调出静态文件,然后一次重新添加一个模块,看看哪个模块导致了问题。如果您无法弄清楚,那么我建议在问题中web.config
发布您的内容web.config
(或至少system.web
和部分)。system.webServer
答案3
我遇到了同样的问题,但我的应用程序池在域帐户下运行,并且该用户有权访问网站文件夹。我的网站呈现了 aspx,但没有静态内容。解决我的问题的方法是将 IIS_IUSRS 组添加到名为“身份验证后模拟客户端”的本地安全策略中。IIS_IUSRS 组中有我的域帐户。我正在运行 iis 7.5 windows 2008 服务器。