当我使用Session变量时,我收到此错误,并执行以下操作:
1)通过ADFS登录并访问该应用程序 2)做手术 3)关闭所有浏览器会话。 (在IE和Chrome中都会发生) 4)我尝试再次通过ADFS登录,它重定向约4次,然后抛出错误。
必须重新启动IIS才能使应用程序正常工作,因为它会全局影响应用程序。一旦发生此错误,任何用户都无法访问它。
我将其缩小为Session变量,即使我使用TempData,ViewBag,ViewData也会给出错误。如果我删除它有效的Session变量,它就不会给我错误。
会话变量导致错误的任何想法?
[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);
});
答案 0 :(得分:2)
我遇到了完全相同的问题,我也意识到这取决于会话变量的使用。
它发生的原因是因为会话变量干扰了Owin响应头设置的cookie。此问题的解决方法是创建自定义cookie管理器。这为我解决了这个问题
此Microsoft文章解释了该问题,并提供了用于创建自定义Cookie管理器的代码示例:https://blogs.msdn.microsoft.com/dsnotes/2016/08/25/owin-cookies-signin-error-with-ad-fs/