请求静态内容时 IIS7 返回空白

请求静态内容时 IIS7 返回空白

我正在尝试配置一台演示机器,它是 EEEPC,装有 Windows 7 Home Premium 版本,所有驱动程序均已正确加载(不要问我为什么它是家庭版),并且安装了 IIS7。

我已将要演示的应用程序部署到一台 ASP.NET MVC 站点的机器上,通过控制台添加了网站,添加了一个应用程序池。应用程序池作为 NetworkService 运行,访客作为 IUSR 进行身份验证。

我已向 NetworkService 添加了修改权限,并向 IUSR 添加了对网站文件夹及其内容的读取和执行权限。

当我触及网络根源时,说 http://example.com/我从网站上获得了正确的 HTML 渲染(这意味着应用程序可以正常运行)但问题是所有静态内容都返回空白。

我不确定为什么会发生这种情况。没有 404 或 500 错误页面,当我访问静态内容时,只有简单的空响应。所有 ASP.NET 生成的内容都可以正常工作(尽管有点奇怪,因为所有 CSS 和图像都不会加载)

请帮忙,IIS7 管理控制台对我来说非常令人困惑,我明天就需要这台机器。

答案1

答案2

正如@MattB 所建议的,我没有启用“静态内容”功能,但这只是问题的一部分。

我已经添加了“静态内容”功能,但问题仍然存在,所以我从处理程序映射列表中删除了默认的 MvcHttpHandler,问题不知何故解决了......所以问题是 MvcHttpHandler 在 StaticFileHandler 之前拦截了请求,

仅供参考,安装“静态内容”后,还要确保......

  1. 在 Internet 信息服务管理器中,单击您的网站。
  2. 双击“处理程序映射”功能。
  3. 在右侧(操作面板),您将看到一个标题为“查看有序列表......”的链接,单击它。
  4. 然后您将发现模块与每个请求匹配的顺序,确保该顺序合理。

在我的例子中,MvcHttpHandler 高于一切,我通过将其移到列表底部解决了这个问题,这是它应该在的最合理的位置,因为 AXD 文件处理程序、TRACE 处理程序、OPTIONS 处理程序和静态内容会首先处理请求。

希望这能帮助那些正在谷歌搜索同样问题的人:-)

答案3

就我而言,服务器角色已经安装完毕,但静态处理程序甚至为仅具有单个处理程序映射的简单测试站点提供了空白页。

修复方法是启用请求限制“仅当请求映射到时才调用处理程序”。无论我将其设置为“文件”还是“文件或目录”,只要启用复选框,它就可以工作:

                  在此处输入图片描述

如果这仍然没有帮助,导致空白页的另一个原因是尝试在“请求路径”部分中指定路径,例如publicpublic/*。后者完全是错误的,而前者应该被接受,但却导致空白页。解决方案是将处理程序映射包装到一个<location path='public'>部分中,*为“请求路径”设置指定。或者,在 IIS 管理器中,展开站点并首先选择您的文件夹,然后编辑处理程序映射。

答案4

如果您已经安装了静态内容,请尝试卸载它,重新启动服务器,然后重新安装它。

这就是我最近在 Windows Server 上工作时修复的问题,该服务器具有严格的文件安全性,但后来开放了更多文件。这可能破坏了该功能的原始安装……或者可能只是宇宙射线位翻转。

相关内容