ADFS 重定向使 MVC 控制器方法失效

ADFS redirect makes MVC controller methods incapacitated

我得到了一个 MVC Web 应用程序。

例如有如下控制器:

    public class MyController
    {
        public MyController()
        { ... }

        [HttpGet]
        public ActionResult Index()
        { ... }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult UpdateMethod(string parameter)
        { ... }
    }

现在出现以下情况:

用户打开更新表单并输入值。他等了一段时间,然后提交了表格。

方法 "UpdateMethod" 应调用为 POST。但由于等待时间过长,cookie 或会话已过期,ADFS 正在注销用户,然后自动登录。在 "UpdateMethod" 中登录后再次调用(由 ADFS 重定向),但现在为获取。因此参数值丢失并发生错误,因为此方法的 [HttpGet] 不存在:

"A public action method 'UpdateMethod​' was not found on controller"

如果我使用 [HttpGet] 添加类似的方法,我可以处理这种情况。但我不想为每个方法添加一个 HttpGet。

    [HttpGet]
    public void UpdateMethod()
    { ... }

那么应对这种情况的最佳方式是什么?

这样解决的:

  1. 覆盖控制器中的 HandleUnknownAction
  2. 如果 Request.UrlReferrer 是 adfs
  3. ,请检查覆盖
  4. 如果没有,请致电base.HandleUnknownAction
  5. 如果它被 a​​dfs 重定向(类似于会话超时),您是否自己处理并显示自定义错误视图