发布ASP.NET Core 2.0至IIS 8.5遇Web.config问题,报500.19错误
解决ASP.NET Core 2.0部署到IIS 8.5时的500.19错误
Hey,我来帮你搞定这个部署时的500.19错误!这个错误本质是IIS没法正确解析你的配置或者缺少必要的运行组件,结合你贴出来的web.config,我整理了几个最可能的修复方向:
1. 先确认AspNetCoreModule有没有装
你的web.config里明确用到了<add name="aspNetCore" modules="AspNetCoreModule" />,这是IIS托管ASP.NET Core应用的核心模块,没它肯定报错:
- 去下载和你应用匹配的ASP.NET Core 2.0 Runtime(包含托管包),别下错版本!
- 安装完一定要重启IIS,确保模块被正确加载
2. 检查应用程序池的关键设置
ASP.NET Core应用对应用池有特殊要求,这步很容易踩坑:
- 把应用池的**.NET CLR版本**改成
无托管代码——毕竟ASP.NET Core是自托管的,不需要IIS自带的CLR - 确保应用池的身份账号有足够权限访问你的应用目录,至少要有读取dll文件的权限,如果要开日志的话还得有写入权限
3. 修复web.config里的潜在问题
看你贴的web.config内容,有几个细节要注意:
- 核对
processPath和arguments的路径:dotnet如果不在系统PATH里,就写绝对路径(比如C:\Program Files\dotnet\dotnet.exe);.\RLANInfrastructureCore.dll要确保确实在网站根目录下,别写错文件名 - 如果想排查更详细的错误,把
stdoutLogEnabled改成true,但要先手动创建.\logs目录,并且给应用池身份写入权限——不然IIS会因为没法创建日志文件报错 - 注意你的
web.config里<aspNetCore>标签有额外的加粗标记,实际部署时要确保XML是纯文本,没有这种格式标记,不然会导致配置解析失败
4. 验证网站目录的权限
- 给网站根目录添加
IIS AppPool\你的应用池名称这个账号的权限,至少要给读取和执行权限 - 如果你的应用需要读写文件、访问数据库,也要确保这个账号有对应的权限
按照上面的步骤挨个排查,基本就能解决这个500.19错误了。要是还不行,开启stdout日志后去看日志文件,里面会有更具体的错误信息,能帮你更快定位问题。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

