1

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

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

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

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

提前非常感谢。

4

3 回答 3

1

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

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

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

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

更多信息:Windows Azure 网站上 ASP.NET MVC 4 的配置提示

于 2013-07-17T01:43:40.237 回答
0

查看菲尔的博客,我认为您需要的是:

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

希望有帮助。

于 2013-07-05T12:38:12.490 回答
0

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

于 2013-07-16T05:50:40.890 回答