You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

访问.NET 4.0站点下.NET 5.0 REST API返回403.18 Forbidden错误如何排查

403.18 Forbidden 错误成因及解决方案

错误成因

  • 核心原因是运行.NET Framework 4.0的父站点web.config配置会默认继承给子级.NET 5.0应用,两套配置依赖的托管运行时完全不兼容,导致IIS判定请求无法在子应用配置的应用池中正常处理。
  • 次要排查点:子应用对应的目录未在IIS中正式转换为「应用」,或.NET 5.0对应的ASP.NET Core托管捆绑包未在服务器上正确安装,导致无托管代码模式无法正确识别和处理请求。

解决方案

1. 阻断父站点配置继承

在父站点根目录的web.config中新增带inheritInChildApplications="false"属性的<location>节点,将父站点专属的运行时配置全部移入该节点内,示例如下:

<location path="." inheritInChildApplications="false">
  <system.web>
    <!-- 父站点原有的.NET 4.0相关配置全部移到此处 -->
  </system.web>
  <system.webServer>
    <!-- 父站点原有的服务端运行配置全部移到此处 -->
  </system.webServer>
</location>

注意:站点全局生效的权限规则、MIME类型配置等不要包裹在该location节点内,仅移入父站专属的运行时相关配置即可

2. 校验子应用基础配置

  • 确认子应用对应的目录已在IIS中右键转换为「应用」,绑定的应用池配置为「无托管代码」、集成管道模式
  • 确认服务器已安装对应.NET 5.0版本的ASP.NET Core托管捆绑包
  • 确认子应用根目录下存在正确的运行配置web.config,基础参考配置如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\你的应用名称.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
  </system.webServer>
</configuration>

3. 重启验证

配置修改完成后,分别重启父站点和子应用对应的应用池,再发起请求验证即可。

内容的提问来源于stack exchange,提问作者Sach K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:30:00