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

ASP.NET Core 5调用ACS/Logout接口出现405 Method Not Allowed错误咨询

错误原因

HTTP 405状态码的含义是请求方法不被目标接口允许,该问题的直接诱因如下:

  1. 你代码中ACSController下的Logout接口仅添加了[HttpPost]特性,仅允许POST类型的请求访问
  2. 从你提供的跳转链接可以看到,SAMLResponse参数是携带在URL查询字符串中的,说明IdP完成登出后是通过GET请求跳转回调到你的/acs/logout接口,和接口允许的请求方法不匹配,因此返回405错误。

解决方法

你可以根据实际场景选择以下任意一种方案:

方案1:接口同时兼容GET、POST请求(兼容性最高,推荐)

修改Logout方法的请求方法限制,同时适配两种请求方式的参数取值逻辑:

[AcceptVerbs("GET", "POST")]
public IActionResult Logout()
{
    // 优先从表单取参数,取不到再从查询字符串取,兼容两种请求方式
    string base64Response = Request.Form.ContainsKey("SAMLResponse") 
        ? Request.Form["SAMLResponse"].ToString()
        : Request.Query["SAMLResponse"].ToString();
    
    // 原有后续逻辑保持不变
    return View();
}

方案2:调整IdP的登出回调配置

如果你使用的IdP支持自定义登出响应的提交方式,可以将登出回调的提交方式修改为POST表单提交,也可以解决该问题,但是兼容性不如方案1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:06:03