【问题标题】:MVC application deployed to IIS5 using Wildcard mapping causes 401 and 404 errors on CSS and JS使用通配符映射部署到 IIS5 的 MVC 应用程序在 CSS 和 JS 上导致 401 和 404 错误
【发布时间】:2010-10-18 13:12:18
【问题描述】:

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

路由工作并显示正确的页面。但是没有提供任何 css 或 js 文件。 Fiddler 向他们展示了 401(未授权)或 404(未找到)错误(没有明显的押韵或原因——有时两者兼而有之)。我返回并将 IgnoreRoute 语句添加到 .css 和 .js 文件的映射表中,但这没有任何区别。我还在目录的安全设置中添加了 LOCALMACHINE\ASPNET,给予它(目前)完全控制权限(我知道这是一个安全漏洞,但我会在它运行后修复它。)

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

【问题讨论】:

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


    【解决方案1】:

    我发现让 scripts/graphics/css 文件正常工作的最简单和最直接的方法是专门为您的 content 目录(图形、脚本、css)删除通配符映射到 aspnet_isapi ,就像您为项目目录添加它们一样。

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

    【讨论】:

      【解决方案2】:

      这是因为当您的应用服务器 url 像:www.domain.com/Controller/Param1/Param2/Param3 时,它会尝试从www.domain.com/Controller/Param1/Param2/Param3/images 获取图像。尝试安装 firebug 并查看 net 部分。很好的解决方法是使用辅助方法添加 css 引用,为 css 引用添加完全限定的路径,例如:www.mydomain.com/css/my_css.css

      【讨论】:

        猜你喜欢
        • 2013-12-24
        • 1970-01-01
        • 2011-04-18
        • 2016-03-21
        • 1970-01-01
        • 2010-09-14
        • 2017-11-04
        • 2011-01-04
        • 1970-01-01
        相关资源
        最近更新 更多