Azure环境下启动Docker容器后出现500错误,如何排查?
IIS容器Azure环境500错误排查步骤
查看容器内IIS原始错误日志
直接进入容器,导航到IIS日志目录查看详细错误记录:cd C:\inetpub\logs\LogFiles\W3SVC1 type *.log日志会包含500错误的具体代码、触发模块、异常详情,这是最直接的排查依据。
检查站点文件权限配置
静态资源也返回500,优先排查权限问题:- 执行命令查看
wwwroot目录权限:icacls C:\inetpub\wwwroot - 对比本地正常容器的权限列表,确保IIS运行账户(如IUSR、ApplicationPoolIdentity)拥有读取权限。
- 执行命令查看
验证IIS应用池与站点配置
- 检查应用池状态:
确认默认应用池处于C:\Windows\System32\inetsrv\appcmd.exe list apppoolStarted状态,且.NET版本、托管管道模式与本地一致。 - 检查站点物理路径配置:
确认路径正确指向C:\Windows\System32\inetsrv\appcmd.exe list site "Default Web Site" /text:[path='/*'].physicalPathC:\inetpub\wwwroot,无配置偏差。
- 检查应用池状态:
强制启用详细错误输出
仅添加<httpErrors errorMode="Detailed" />可能不够,需补充配置:- 在Web.config中添加:
<system.web> <customErrors mode="Off"/> </system.web> - 用命令强制设置站点错误模式:
C:\Windows\System32\inetsrv\appcmd.exe set site "Default Web Site" /siteDefaults.httpErrors.errorMode:Detailed
- 在Web.config中添加:
复制配置与日志到本地对比
若容器支持远程文件复制,执行命令将关键文件复制到本地分析:docker cp <容器ID>:C:\inetpub\wwwroot\Web.config ./local-web.config docker cp <容器ID>:C:\inetpub\logs\LogFiles\W3SVC1 ./local-logs对比本地正常环境的配置,排查是否存在连接字符串、模块引用等差异。
内容的提问来源于stack exchange,提问作者Bluebaron
相关产品推荐
相关产品推荐

