MVC中使用的会话变量时ADFS登录错误



我使用会话变量时会遇到此错误,并且我执行以下操作:

1)通过ADF登录并访问应用程序2)执行操作3)关闭所有浏览器会议。(在IE和Chrome中都发生)4)我尝试再次通过ADF登录,并重定向大约4次,并引发错误。

必须重新启动以使应用程序正常工作,因为它会影响全球应用程序。一旦发生此错误,都无法访问它。

我将其范围缩小到会话变量,即使我使用tempdata,viewbag,viewData也会给出错误。如果我删除了会话变量,则不会给我错误。

有什么想法为什么会话变量会导致错误?

[HttpPost]
[ValidateAntiForgeryToken]
//Gets called on button clicked
public ActionResult SaveDoc()
{
   Session["myList"] = bpc.UploadDocument(dto);
   return Json(new { success = true, redirectToUrl = Url.Action("Summary") });
 }

  public ActionResult Summary()
  {
     return View();
  }
    [HttpPost]
    public ActionResult GetResults_List([DataSourceRequest]DataSourceRequest request, CloudDTO dto)
    {           
       var getResults = (List<SampleList>)Session["myList"];
       return Json(getResults.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
    }

客户端

function btnSubmitClick() {
    displaySpinner(true);
    $.ajax({
        url: '@Url.Action("SaveDoc", "Home")',
        datatype: 'json',
        data: {
            __RequestVerificationToken: $('[name=__RequestVerificationToken]').val(),
            URL: value,
            CloudProvider: $("#cloudProvider").data("kendoDropDownList").text(),
        },
        type: "POST"
    }).success(function (data) {
        if (data.success) {
            //On success we go to the Summary page.
            window.location.href = data.redirectToUrl;
        }
        else {
            //Error Message to user.
            $("#validationMessage").html(data.message);
        }
    })
    .done(function () {
        displaySpinner(false);
    });

我遇到了完全相同的问题,我也意识到这取决于会话变量的使用。

发生的原因是因为会话变量干扰了Owin响应标头设置的cookie。此问题的解决方法是创建自定义Cookie Manager。这为我解决了问题

这篇Microsoft文章解释了此问题,还提供了用于创建自定义cookie Manager的代码示例:https://blogs.msdn.microsoft.com/dsnotes/2016/08/08/25/OWIN-COOKIES-COOKIES-COOKIES-SIGNIN-SIGNIN-ERROR-WITH-ad-fs/

最新更新