MVC + IIS7 = CSS问题

时间:2008-12-09 18:19:22

标签: asp.net asp.net-mvc iis-7

我在Vista上通过IIS7运行了一个网站。该站点在端口88上运行,因此http://localhost:88应呈现默认/ Home / Index视图。

这与其他所有视图一样正常。

然而,一个问题是居民。我的脚本路径指向/ Scripts / [FILE],我的CSS路径指向/ Content / [FILE]。我的假设是/ Content或/ Scripts文件夹始终位于站点的根目录,因为我无意在虚拟目录设置中运行此站点。每当页面呈现时,它们都没有CSS或脚本!所以一切看起来都很糟糕,脚本显然不起作用,因此许多观点也不起作用。

这是一个非常奇怪的问题,我确信这是因为我缺乏在IIS7下托管内容的知识。我很感激任何人都可以提供帮助。非常感谢!

5 个答案:

答案 0 :(得分:12)

我希望这个帖子的延续表达了一种意愿,即确保这个问题不会让任何人离开悬崖。在各种论坛上有很多关于在Vista上解决这个问题的文档但我找不到同样的文章2K8。正如本forum post所示,我能够在Vista机器上解决问题。唉,类似的执行未能解决2K8上的问题。

我已经验证了StaticFileHandler已包含在web.config as suggested in this blog post at apijunkie.com中。不过,没有运气。

澄清没有运气,这里 - 我的服务器端功能非常完美。所有MVC路线都像冠军一样工作。只是所有的CSS和JS渲染都失败了。当浏览器直接指向CSS或JS文件时,结果页面是ASP.NET 404而不是传统 404错误页面。

所以我进入了IIS7管理器并进入了Handler Mappings对话框。我添加了一个新的处理程序,它指定了System.Web.StaticFileHandler类型,并为其提供了* .CSS的扩展名。然后我重复了* .SS,* .PNG和* .GIF文件。当我在浏览器中刷新网站时,所有内容都会正常呈现。下面的屏幕截图演示了这个过程。

处理程序映射窗口:

handler mappings
(来源:windows.net

添加新的托管处理程序

alt text
(来源:windows.net

这解决了这个问题,现在我在W2K上有一个功能完善的MVC应用程序。吉尼斯的时间。

答案 1 :(得分:7)

在“控制面板”中,转到“打开或关闭Windows功能”,然后选中“IIS”子子节点中的“静态内容”。

答案 2 :(得分:3)

问题在于我创建应用程序的方式。根据{{​​3}},我需要选择“Classic .NET AppPool”来解决我的问题。一定要喜欢进步!

答案 3 :(得分:0)

原来这不是Windows 2008上的修复。如果有人对如何解决此问题有任何想法,我们将不胜感激。

详细问题:

Windows 2K8服务器,IIS7。已打开管道并安装了静态文件支持。 MVC可以工作,但CSS不会渲染。

到底是什么?

答案 4 :(得分:-2)

问题不在于授权/身份验证,而在于现在管理IIS的模块。 在system.webServer中,您应该将 runAllManagedModulesForAllRequests 设置为 false ,这样您就可以显示所有images / css而不会出现身份验证问题。

在ASP.NET网站中,之前必须将 runAllManagedModulesForAllRequests 的值设置为true才能支持路由。但是,使用Service Pack 更新 IIS 7后, runAllManagedModulesForAllRequests 的值可以设置为 false ,或在使用ASP时省略。 NET路由。

参考。 http://www.iis.net/configreference/system.webserver/modules

P.S。不要忘记将以下行添加到我的web.config文件的AppSettings部分:

< add key =“autoFormsAuthentication”value =“false”/>

< add key =“enableSimpleMembership”value =“false”/>