ASP.NET MVC 5 在 Azure 上:对于 SVG 文件,“您正在寻找的资源已被移除…”
ASP.NET MVC 5 在 Azure 上:对于 SVG 文件,“您正在寻找的资源已被移除…”
我创建了一个带有一些视图和控制器的MVC 5网页,添加了一些图片(gif和svg),并验证了基本上在本地工作正常。图片显示出来,一切都按预期运行。\n当我将网页部署到Azure时,gif图片加载正常,但svg图片出现错误The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
当我使用Azure凭据登录我的网站的FTP时,gif和svg文件都在那里。我可以正常访问我的/img/loading.gif
文件;然而,/img/logo.svg
-- 虽然它在目录中存在,并且在本地运行时显示出来 -- 但在我的Azure网站上服务时找不到。\n我不认为这是相关的,但我正在告诉我的网站路由现有文件:routes.RouteExistingFiles = true;
\n而且我的所有图片 -- gif和svg -- 都位于Solution \'mySolutionName\' -> myMvcProjectName -> img
。所以我看不到任何指示我的网站以不同方式处理这些文件的东西。
在将ASP.NET MVC 5应用程序部署到Azure时,可能会遇到一个问题,即在访问SVG文件时显示"您要查找的资源已被删除..."的错误信息。
经过一番研究,发现这是由于staticContent
MIME类型的问题,可以在这个回答中找到解决方法。
要解决这个问题,需要在Web.config
文件中的<system.webServer>
部分进行一些配置。首先,找到以下代码块:
<system.webServer> <modules> <remove name="FormsAuthentication" /> </modules> </system.webServer>
然后,在此代码块中添加一个<staticContent>
节点,以添加SVG文件的适当MIME类型配置。具体代码如下:
<system.webServer> <modules> <remove name="FormsAuthentication" /> </modules> <staticContent> <mimeMap fileExtension="svg" mimeType="image/svg+xml" /> </staticContent> </system.webServer>
通过添加以上代码,将为SVG文件添加了正确的MIME类型配置,从而解决了在Azure上访问SVG文件时出现"您要查找的资源已被删除..."错误的问题。