【问题标题】:ASP.Net IgnoreRoutes Does not workASP.Net IgnoreRoutes 不起作用
【发布时间】:2013-03-14 06:52:26
【问题描述】:

我有一个 svg 文件作为我的资产,在 routeconfig 中,我提到了以下代码

    routes.IgnoreRoute("{*svg}", new { svg = @"(.*/)?.svg(/.*)?" });

这似乎适用于 cassini(Visual Studio 2012 内置部署服务器),但是当我将它部署到 Azure 时,我得到了 404。

我的 IgnoreRoute 声明正确吗?或任何其他解决方案?所有其他图像,样式表似乎都可以正常工作。

非常感谢。

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-3 azure


    【解决方案1】:

    您永远不必忽略物理上存在于磁盘上的文件的路由,路由模块不会尝试路由这些请求。您只需要忽略到其他虚拟资源的路由。

    Azure 网站没有为 .svg 文件配置 mime 类型,至少在去年年底还没有。您可以在 web.config 文件的 <system.webserver> 部分为 svg 配置 mime 类型:

    <staticContent>
      <remove fileExtension=".svg"/>      
      <mimeMap fileExtension=".svg" mimeType="image/svg+xml"/>
    </staticContent>
    

    删除是为了防止已经有 .svg 条目的服务器上出现错误。添加重复的文件扩展名是错误的,但删除不存在的扩展名不是错误。

    更多:Configuration Tips For ASP.NET MVC 4 on a Windows Azure Website

    【讨论】:

      【解决方案2】:

      您声明路线的顺序是什么?可能是在那个之上,你有一个默认或全部的路由,实际上已经处理了请求,所以你的 IgnoreRoute 永远不会被击中。

      【讨论】:

        【解决方案3】:

        看着Phil's Blog我想你需要的是这样的:

        routes.IgnoreRoute("{*allsvg}", new {allsvg=@".*\.svg(/.*)?"});
        

        希望对您有所帮助。

        【讨论】:

          猜你喜欢
          • 2010-10-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-03
          • 2017-03-29
          • 2011-12-27
          • 2011-06-13
          • 1970-01-01
          相关资源
          最近更新 更多