我正在尝试配置一个演示机器,它是带有 Windows 7 家庭高级版的 EEEPC,所有驱动程序都正确加载(不要问我为什么它是家庭版)并安装了 IIS7。
我已经在作为 ASP.NET MVC 站点的机器上部署了要演示的应用程序,通过控制台添加了网站,添加了一个应用程序池。应用程序池作为 NetworkService 运行,来宾作为 IUSR 进行身份验证。
我添加了对 NetworkService 的修改权限以及对网站文件夹及其内容的 IUSR 的读取和执行权限。
当我点击网络的根目录时,比如 http://example.com/ ,我从网站上得到了一个正确的 HTML(这意味着应用程序可以工作),但问题是所有静态内容都返回空白。
我不确定为什么会这样。没有 404 或 500 错误页面,当我访问静态内容时只是简单的空响应。所有 ASP.NET 生成的内容都可以正常工作(虽然有点奇怪,因为所有 CSS 和图像都不会加载)
请帮忙,IIS7 管理控制台让我很困惑,我明天需要这台机器。
你打开静态内容功能了吗?
http://weblogs.asp.net/anasghanem/archive/2008/05/23/don-t-forget-to-check-quot-static-content-service-quot-in-iis7-installation.aspx
正如@MattB 建议的那样,我没有启用“静态内容”功能,但这只是问题的一部分。
我添加了“静态内容”功能,但问题仍然存在,所以我开始从处理程序映射列表中删除默认的 MvcHttpHandler 并且问题以某种方式自行解决......所以问题是 MvcHttpHandler 在拦截请求之前静态文件处理程序,
仅供参考,安装“静态内容”后,还要确保...
在我的例子中,MvcHttpHandler 高于一切,我通过将它移到列表的底部来解决问题,这是它应该在的最明智的位置,因为 AXD 文件处理程序、TRACE 处理程序、OPTIONS 处理程序和静态内容得到了一个镜头在首先处理请求时。
希望这有助于有人在谷歌上搜索同样的问题:-)
在我的例子中,已经安装了服务器角色,但是静态处理程序提供空白页面,即使对于只有一个处理程序映射的简单测试站点也是如此。
修复是启用请求限制“仅当请求映射到时调用处理程序”。我将它设置为“文件”还是“文件或目录”都没有关系;只要启用该复选框,它就可以工作:
如果这仍然没有帮助,导致空白页面的另一件事是尝试在“请求路径”部分中指定一个路径,
public
例如public/*
. 后者是完全错误的,而前者应该被接受,但结果却是空白页。解决方案是将处理程序映射包装到一个<location path='public'>
部分中,指定*
“请求路径”设置。或者,在 IIS 管理器中,展开站点并首先选择您的文件夹,然后编辑处理程序映射。