使用通配符映射部署到IIS5的MVC应用程序导致CSS和JS上出现401和404错误

时间:2010-10-18 13:12:18

标签: asp.net-mvc asp.net-mvc-routing

我一直在VS2010的内置Web服务器下开发MVC 2应用程序。星期五,我将它移动到我的WinXP开发机器中的IIS 5下的虚拟目录中。我遇到了常见问题,并在IIS中的虚拟目录配置中添加了通配符映射,以将。*映射到aspnet_isapi.dll(Framework 4)。既不存在检查文件框也不检查脚本引擎框。

路由工作并调出正确的页面。但是没有提供css或js文件。 Fiddler显示他们得到401(未授权)或404(未找到)错误(没有明显的押韵或理由与哪一个 - 有时两者都有)。我回过头来将IgnoreRoute语句添加到.css和.js文件的映射表中,但这没有任何区别。我还将LOCALMACHINE \ ASPNET添加到目录的安全设置中,给它(现在)完全控制权限(我知道这是一个安全漏洞,但我会在运行后修复它。)

我没有看到任何关于让MVC在IIS 7之前的服务器上运行的博客文章中提到的这个问题。有没有人看过它,你是怎么解决的?

2 个答案:

答案 0 :(得分:0)

我发现使脚本/图形/ css文件正常工作的最简单,最直接的方法是为内容目录(图形,脚本,css)专门删除aspnet_isapi的通配符映射,就像你为项目目录添加一样。

右键单击脚本文件夹并选择属性,然后单击“创建”。配置按钮现在可用;单击它并按删除以删除该文件夹从其父级继承的自定义映射;点击没关系。现在返回该文件夹的属性对话框,单击删除,使其不再是虚拟目录,然后单击“确定”。重复其他此类文件夹。

答案 1 :(得分:0)

这是因为当您的应用服务器网址为:www.domain.com/Controller/Param1/Param2/Param3时,它会尝试从www.domain.com/Controller/Param1/Param2/Param3/images获取图片。尝试安装firebug并查看网段。对此的好处是使用辅助方法添加css引用,为css引用添加完全限定的路径,如:www.mydomain.com/css/my_css.css

相关问题