ASP.Net IgnoreRoutes不起作用

时间:2013-03-24 20:50:14

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

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

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

这似乎适用于cassini(Visual Studio 2012 Buit-in Deployment Server),但当我将其部署到Azure时,我得到了404.

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

提前多多感谢。

3 个答案:

答案 0 :(得分:1)

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

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

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

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

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

答案 1 :(得分:0)

关注Phil's Blog我认为您需要的是:

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

希望有所帮助。

答案 2 :(得分:0)

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