修改web.config后IIS突然无法加载图片、CSS、JS等静态文件如何解决
本地IIS静态资源加载失败修复方案
触发故障的配置
Web应用web.config中添加的配置如下:
<system.web> ... <authentication mode="Windows"/> <identity impersonate="true"/> ... </system.web>
故障表现
配置添加后本地IIS无法正常加载图片、CSS、JS等静态资源,重装IIS功能也无法解决,所有已发布站点甚至IIS默认站点都存在该问题,故障截图如下:
已配置的应用和其他应用在Web服务器、Visual Studio的IIS Express上均可正常运行,仅本地Localhost访问时异常,浏览器状态栏显示等待static.antp.co响应。
故障原因
开启Windows身份验证与身份模拟后,本地IIS处理静态资源时默认使用模拟身份访问静态文件目录,该身份未获得对应目录的读取权限,就会导致静态资源请求超时。服务器和IIS Express运行正常的原因是:IIS Express默认以当前登录的Windows用户身份运行,本身具备目录读取权限;服务器站点的应用程序池身份通常已经提前配置了对应目录的访问权限,因此不会触发该问题。
修复步骤
- 确认IIS已安装静态内容功能:打开「控制面板-程序-启用或关闭Windows功能」,展开「Internet Information Services-万维网服务-常见HTTP功能」,勾选「静态内容」后确认安装。
- 配置站点目录权限:右键站点根目录,选择「属性-安全」,添加
IUSR、IIS_IUSRS两个用户,授予「读取和执行、列出文件夹内容、读取」权限。 - 调整IIS匿名身份验证配置:打开IIS管理器,点击对应站点的「身份验证」选项,右键「匿名身份验证」选择「编辑」,将匿名用户标识设置为「应用程序池标识」。
- 检查静态文件处理程序状态:打开IIS管理器的「处理程序映射」,确认
StaticFile处理程序处于启用状态,若被禁用手动开启即可。 - 全局IIS异常可重置配置:以管理员身份打开命令提示符,执行
iisreset重启IIS服务,仍异常可执行%windir%\system32\inetsrv\appcmd restore config "Default Web Site"恢复默认站点配置。
内容的提问来源于stack exchange,提问作者AEC Production
相关产品推荐
相关产品推荐

