我有一个svg文件作为我的资产,并且在routeconfig中,我提到了下面的代码
routes.IgnoreRoute("{*svg}", new { svg = @"(.*/)?.svg(/.*)?" });这似乎在cassini (Visual Studio 2012 Buit-in Deployment Server)上工作得很好,但当我将它部署到Azure时,我得到了一个404。
我的IgnoreRoute语句正确吗?或任何其他解决方案?所有其他图像,样式表似乎工作正常。
在此之前非常感谢。
发布于 2013-07-17 09:43:40
您永远不必忽略物理存在于磁盘上的文件的路由,路由模块将不会尝试路由这些请求。您只需要忽略到其他虚拟资源的路由。
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
发布于 2013-07-05 20:38:12
看看Phil's Blog,我认为你需要的是:
routes.IgnoreRoute("{*allsvg}", new {allsvg=@".*\.svg(/.*)?"});希望这能有所帮助。
发布于 2013-07-16 13:50:41
您声明路由的顺序是什么?它可能是上面的一个,你有一个默认的或捕获所有的路由,它实际上已经处理了请求,所以你的IgnoreRoute永远不会被击中。
https://stackoverflow.com/questions/15603831
复制相似问题