资源ID含连字符时WebAPI Get请求突发500.19错误求助
解决IIS 500.19:无法添加重复集合项‘aspNetCore’的问题
我之前也碰到过一模一样的坑!本来好好的WebAPI突然就爆这个500.19错误,改App URL建个新应用就暂时恢复,但删了原应用又复发,折腾了好一阵才搞清楚根源——这本质是IIS的配置继承冲突,或者旧应用残留的配置和ASP.NET Core的托管配置重复了。下面是我亲测有效的解决办法:
1. 先检查应用程序池的核心配置
ASP.NET Core应用必须用无托管代码的应用程序池:
- 打开IIS管理器,找到你的应用对应的应用程序池
- 右键→“高级设置”,把“.NET CLR版本”改成“无托管代码”
- 重启应用程序池和站点,很多时候这一步就能直接解决问题
2. 清理Web.config里的重复配置
如果应用的web.config继承了上层站点的handlers/modules,就会出现重复注册:
- 打开项目根目录的
web.config,找到<system.webServer>下的<handlers>节点,在开头添加<clear />,先清空继承的处理程序,再注册ASP.NET Core的handler:<handlers> <clear /> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> - 同样,
<modules>节点也可以加<clear />避免重复:<modules> <clear /> <add name="AspNetCoreModuleV2" /> </modules> - 保存后重新发布或者重启站点
3. 排查IIS全局配置的残留项
有时候旧应用删除后,IIS的全局配置文件applicationHost.config里还留着重复的注册:
- 找到路径
C:\Windows\System32\inetsrv\config\applicationHost.config(修改前一定要备份!) - 用文本编辑器打开,搜索
aspNetCore,看看有没有重复的<add>项 - 如果有,删除多余的重复项,保存后重启IIS服务(命令行执行
iisreset)
4. 彻底清理旧应用的残留文件
有时候原应用的物理路径里还留着旧的web.config或者临时文件:
- 找到原应用的物理目录,删除所有文件(包括隐藏的
.vs或者logs文件夹) - 重新发布最新的WebAPI代码到该目录,再创建应用程序
额外排查技巧
- 开启IIS的失败请求跟踪,能看到更详细的错误堆栈,定位到底是哪个配置节点冲突
- 查看ASP.NET Core的日志(默认在
logs文件夹),确认托管进程是否正常启动
内容的提问来源于stack exchange,提问作者user1060500
相关产品推荐
相关产品推荐

