我有一个 svg 文件作为我的资产,在 routeconfig 中,我提到了以下代码
routes.IgnoreRoute("{*svg}", new { svg = @"(.*/)?.svg(/.*)?" });
这似乎适用于 cassini(Visual Studio 2012 内置部署服务器),但是当我将它部署到 Azure 时,我得到了 404。
我的 IgnoreRoute 声明正确吗?或任何其他解决方案?所有其他图像,样式表似乎都可以正常工作。
提前非常感谢。
我有一个 svg 文件作为我的资产,在 routeconfig 中,我提到了以下代码
routes.IgnoreRoute("{*svg}", new { svg = @"(.*/)?.svg(/.*)?" });
这似乎适用于 cassini(Visual Studio 2012 内置部署服务器),但是当我将它部署到 Azure 时,我得到了 404。
我的 IgnoreRoute 声明正确吗?或任何其他解决方案?所有其他图像,样式表似乎都可以正常工作。
提前非常感谢。
您永远不必忽略磁盘上物理存在的文件的路由,路由模块不会尝试路由这些请求。您只需要忽略到其他虚拟资源的路由。
Azure 网站没有为 .svg 文件配置 mime 类型,至少在去年年底他们没有。<system.webserver>
您可以在web.config 文件的部分中为 svg 配置 mime 类型:
<staticContent>
<remove fileExtension=".svg"/>
<mimeMap fileExtension=".svg" mimeType="image/svg+xml"/>
</staticContent>
删除是为了防止已经有 .svg 条目的服务器上出现错误。添加重复的文件扩展名是错误的,但删除不存在的扩展名不是错误。
您声明路线的顺序是什么?可能是在那个之上,你有一个默认或全部的路由,实际上已经处理了请求,所以你的 IgnoreRoute 永远不会被击中。