ASP.NET Core进程内托管IIS:web.config返回404.8而非通用404如何解决?
解决ASP.NET Core进程内托管IIS时web.config返回特定404的问题
要让请求web.config时返回通用HTTP 404而非暴露技术栈的404.8错误,需要调整IIS的请求过滤配置并确保错误响应由ASP.NET Core处理,具体步骤如下:
移除IIS对web.config的隐藏段限制
在应用根目录的web.config中,找到<system.webServer>节点,添加或修改请求过滤配置,移除默认的web.config隐藏段规则,让请求能到达ASP.NET Core应用:<system.webServer> <security> <requestFiltering> <hiddenSegments> <remove segment="web.config" /> </hiddenSegments> </requestFiltering> </security> <!-- 保留原有其他配置,比如<aspNetCore>节点等 --> </system.webServer>配置IIS传递ASP.NET Core的错误响应
继续在web.config的<system.webServer>节点中添加httpErrors配置,确保IIS不会将ASP.NET Core返回的通用404替换为自身的特定错误页:<system.webServer> <httpErrors existingResponse="PassThrough" /> <!-- 其他配置 --> </system.webServer>
完成上述修改后,重启IIS站点,再次请求web.config时,请求会先绕过IIS的隐藏段拦截,到达ASP.NET Core应用后由Kestrel返回通用的HTTP 404响应,避免泄露技术栈信息。
内容的提问来源于stack exchange,提问作者AxD
相关产品推荐
相关产品推荐

