非常诡异的IIS下由配置文件加上svg的mime头导致整个网站的静态文件访问报错误

Posted 学无止境

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了非常诡异的IIS下由配置文件加上svg的mime头导致整个网站的静态文件访问报错误相关的知识,希望对你有一定的参考价值。

调试了两天遇到一个非常诡异的问题 一个系统稳定运行了很多年,是用mvc5+WIN2008R2  + .NET 4.5 +IIS环境下运行,非常稳定,最近想迁移到一台新的服务器,为了少麻烦在阿里云上买了一台同样环境的WINDOWS 2008 R2 ,把程序部署上去后报了十分诡异的错误。

1.部署新服务器后,全部动态程序运行正常,但是所有静态文件无法加载(图片,css,js,html)纯静态访问全部报500错误(无法显示页面,因为发生内部服务器错误)

最后定位到了问题原因,原来在web.config里关键的一句去掉svg的mine配置就正常了。去掉配置节点system.webServer/modules/staticContent/

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

去掉就正常加上就报错(仅限访问静态文件报错,动态文件正常)这让人十分诡异 ,最后只有把这一句去掉,去掉也影响不大,因为svg只是一个介面模板要使用的美化图标之类的,不影响不大,但始终像吃了苍蝇一样。有遇到同样问题的欢迎共勉。

 这个莫名奇妙错误描述直接显示文本,没有详细错误代码 ,导致排查过程中被严重误导,以为是环境安装权限之类的问题

最后搜索到一个解决办法  繁体文章有点类似症状

https://hant-kb.kutu66.com/mip/12245572 

前面加上一句

<remove fileExtension=".svg"/>

 

 

以下是尝试使用的各办法走了不少弯路

1.尝试把网站目录权限设置在EveryOne完全控制 ,虽然很危险也没有解决.
2.尝试把runAllManagedModulesForAllRequests改成=false 或删除
3.建立独立的应用程序池来运行
4.应用程序池 高级设置->启用32位应用程序 设置true
5.尝试各种重启 重装环境。
6.以为带宽 内存不够,加大带宽内存配置
7.开始网站目录建立在C盘,然后搬到其他硬盘。

这个问题报错太诡异走了太多弯路记录以下给其他遇到的人共勉

以上是关于非常诡异的IIS下由配置文件加上svg的mime头导致整个网站的静态文件访问报错误的主要内容,如果未能解决你的问题,请参考以下文章

在IIS服务器上部署svg/woff/woff2字体

为IIS增加svg和woff等字体格式的MIME(20032008)

IIS无法加载字体文件(*.woff,*.svg)的解决办法

为啥 IIS 需要声明 mime 类型?

IIS6 服务未注册的 MIME 类型

解决IIS Web部署 svg/woff/woff2字体 404错误