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

IIS下ASP.NET应用接收OIDC SSO POST请求返回405错误如何解决

ASP.NET应用接收OIDC POST请求返回405错误排查方案

第一步:定位请求实际匹配的处理程序

你可以通过IIS自带的失败请求跟踪功能查看请求的完整处理链路:

  • 打开IIS管理器,定位到目标站点,在功能视图中找到「失败请求跟踪」,启用该站点的跟踪功能
  • 新建跟踪规则,指定仅捕获状态码为405的请求,跟踪提供程序勾选「WWW Server」下的「Handler Mappings」相关事件
  • 复现POST请求后,打开生成的XML格式跟踪日志,可直接看到请求匹配到的处理程序,以及哪个环节拒绝了POST方法

第二步:常见问题修复方案

绝大多数该类问题都是IIS模块冲突或处理程序动词限制导致,可按优先级尝试以下修改:

1. 移除WebDAV模块冲突

生产环境IIS默认安装的WebDAV模块会拦截POST/PUT等非只读请求,是405问题的高发原因,直接在应用的web.config中添加如下配置覆盖全局规则即可:

<configuration>
  <!-- 原有配置内容保留,新增以下system.webServer节点 -->
  <system.webServer>
    <modules>
      <remove name="WebDAVModule" />
    </modules>
    <handlers>
      <remove name="WebDAV" />
      <!-- 修复无扩展名路由的POST访问限制 -->
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
</configuration>

2. 检查OWIN中间件配置

如果你的应用采用OWIN中间件处理OIDC认证,需要确保处理程序已正确注册,在system.webServer/handlers节点下添加如下配置:

<add name="Owin" verb="*" path="*" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler, Microsoft.Owin.Host.SystemWeb"/>

3. 校验业务代码配置

排查OIDC回调对应的Action方法是否漏加[HttpPost]特性,或者路由规则中是否限制了仅允许GET方法访问该端点。

第三步:配置验证

修改配置后重启站点,直接用POST工具向目标端点发起请求验证返回结果,如果仍出现405,可通过第一步的失败请求跟踪日志确认是否有其他全局模块拦截了请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:30:05