ASP.NET Core 3.1控制器路由用api前缀IISExpress报500.19错误
故障解决方案
HTTP Error 500.19 属于IIS/IIS Express专属的配置类错误,路由仅含api关键词时触发、Kestrel运行正常,本质是IIS Express的路径匹配规则和ASP.NET Core路由存在冲突,可按以下优先级排查解决:
- 检查项目根目录、wwwroot目录下是否存在名为
api的物理文件夹或同名文件
IIS Express会优先将请求匹配到物理资源而非转发给ASP.NET Core托管程序,存在对应物理资源时会触发映射权限错误,删除或重命名该资源即可修复。 - 清理当前解决方案的IIS Express本地配置
两个配置相同的解决方案表现不一致,基本为对应解决方案的专属IIS Express配置残留冲突项导致。直接删除解决方案根目录下的.vs隐藏文件夹,重启Visual Studio重新运行项目即可。.vs目录存储当前解决方案独有的applicationhost.config配置,可能残留了历史测试产生的api路径相关虚拟目录、处理程序映射或URL重写规则。 - 校验
Web.config的ASP.NET Core处理程序配置
确保项目根目录的Web.config中处理程序注册配置正确,所有请求都会被转发到ASP.NET Core托管层:
重点确认<system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> </system.webServer>resourceType属性值为Unspecified,如果设置为File或Directory,IIS会优先校验请求路径对应的物理资源是否存在,无对应物理资源的api路由会直接抛出500.19错误。 - 排查全局IIS Express配置的冲突规则
以上操作均无效时,打开IIS Express全局配置文件(默认路径为C:\Users\<当前系统用户名>\Documents\IISExpress\config\applicationhost.config),搜索是否存在全局注册的api路径相关重写规则、处理程序映射或虚拟目录,删除冲突配置即可。
内容的提问来源于stack exchange,提问作者Chris Bardsley
相关产品推荐
相关产品推荐

