IIS 7.5 不加载静态 html 页面

Kiz*_*izz 10 iis windows-server-2008 iis-7 asp.net

在专用服务器上新安装了 IIS 7.5。ASP.NET 4.0 Web 应用程序复制到其文件夹中,新网站在 80 后在自己的 IP 上创建,IIS_IUSR 和 IUSR 帐户对网站文件夹具有读取/执行权限,该网站被分配到自己的 4.0 .NET 集成应用程序池(我尝试了经典池,结果相同)。

问题:当我尝试访问该网站时,浏览器仅加载由.NET 资源生成的内容,例如aspx 页面、.axd 文件等。静态图像、静态js、css 和html 文件在页面源中,但IIS 没有不为他们服务。所有浏览器中的开发工具都抱怨服务器发送的所有这些静态资源都带有错误的内容类型(纯文本而不是图像、样式等)。我做错了什么?

小智 12

IIS 7/7.5 有一个新的“特性”——角色服务。rsbarro 的帖子提醒我,有一个角色服务负责静态内容。它是 Web 服务器/常见 HTTP 功能/静态内容。按照 rsbarro 的建议,检查 IIS 管理器中是否存在 MIME 类型图标。

如果没有,您需要安装静态内容角色服务。为此,请选择:

  • 服务器管理器
  • 角色
  • 左侧窗格中的 Web 服务器 (IIS) 节点
  • 滚动到角色服务窗口
  • 查看是否安装了静态内容角色服务。

从你的描述来看,这似乎是你的问题。

一般来说,如果IIS7没有做IIS6做过的事情,首先要检查是否安装了对应的角色服务。希望这可以帮助。


小智 6

在 IIS 下,转到您的网站并检查 MIME 类型部分(见下图)。确保您在该列表中看到 .js、.css、.html 等的条目,并且它们指定了正确的 MIME 类型。如果指定了 MIME 类型,IIS 7.5 将只提供页面。默认情况下,这些扩展名的 MIME 类型设置在applicationHost.config文件C:\Windows\system32\inetsrv\config夹中的文件中(您可能必须以管理员身份运行记事本才能查看文件)。只需搜索 .js,您就会<mimeMap><staticContent>元素下找到一个条目。

iis mime 类型

这些设置可以在您的web.config文件中被覆盖。如果是,它们将出现在 中的以下位置web.config

<system.webServer>
    <staticContent>
        <remove fileExtension=".js" />
    </staticContent>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

我肯定会从那里检查开始。如果在 MIME 类型部分下一切正常,那么您可能有一个模块干扰了对静态文件的请求(但很可能只有您<modules runAllManagedModulesForAllRequests="true" />在您的<system.webServer>部分中进行了设置)。如果是这种情况,我会删除您中设置的所有模块web.config,看看您是否可以调出静态文件,然后一次读取一个,看看是哪个模块导致了问题。如果您无法弄清楚,那么我建议您在问题中发布您web.config(或至少是system.websystem.webServer部分)的内容。