IIS7部署.NET MVC站点IE10加载CSS失败返回MIME为text/html及406错误
问题现象
运行在IIS 7上的.NET MVC应用,Chrome、Firefox浏览器页面样式加载正常,仅IE 10中CSS无法加载。Network面板显示CSS资源返回MIME类型为text/html,同时返回406(HTTP Unacceptable)状态码,确认CSS文件路径正确。
页面引用CSS代码如下:
<link href="/Content/css-app/bootstrap.min.css?v=20210924122520" rel="stylesheet" type="text/css" />
IE 10 Network日志如下:
解决思路
406状态码本质是服务器无法返回客户端Accept请求头指定的内容格式,同时返回text/html类型说明CSS请求未被IIS静态文件处理模块接收,反而被托管程序处理后返回了错误页/路由不匹配内容,可按以下步骤逐一排查:
- 第一步:配置MVC路由忽略静态资源路径
打开项目RouteConfig.cs文件,在路由规则最顶部添加忽略静态资源目录的规则,避免托管路由拦截CSS等静态文件请求:routes.IgnoreRoute("Content/{*pathInfo}"); // 如还有Scripts等其他静态资源目录可再加对应规则 // routes.IgnoreRoute("Scripts/{*pathInfo}"); - 第二步:核对IIS站点MIME类型配置
打开IIS管理器,进入对应站点的「MIME类型」功能,确认.css扩展名对应的MIME值为text/css,如不存在或配置错误,重新添加即可。 - 第三步:调整IIS处理程序优先级
进入站点的「处理程序映射」功能,点击右侧「查看有序列表」,将StaticFile处理程序移动到所有.NET托管处理程序(如ExtensionlessUrlHandler-Integrated-4.0)之前,保证静态文件请求优先被静态处理模块响应,不会进入托管路由逻辑。 - 第四步:校正web.config静态资源配置
在项目web.config的<system.webServer>节点下添加如下配置,强制指定CSS文件的MIME类型:<staticContent> <remove fileExtension=".css" /> <mimeMap fileExtension=".css" mimeType="text/css" /> </staticContent> - 第五步:排查IE 10用户代理识别问题
低版本.NET Framework无法正确识别IE 10的用户代理标识,会误判为低版本浏览器或未知客户端,导致请求处理异常。可升级对应服务器的.NET Framework补丁,或在项目中添加兼容IE 10的浏览器能力配置文件。
所有配置修改完成后,重启IIS站点,清除IE 10浏览器缓存后再次测试即可。
内容的提问来源于stack exchange,提问作者Aishwary Rastogi
相关产品推荐
相关产品推荐

