.Net MVC Redirect после аутентификации ADFS приводит к потере данных в TempData
Ваша помощь будет оценена
В нашем веб-приложении у нас есть метод с именем "ExternalLogin", который является методом Post в MVC Controller.
public ActionResult ExternalLogin(FormCollection collection)
{
//Here we set bunch of Temp Data (I know it is bad but it is what it is)
var ovm = TempData["optionsVm"];
ovm.Prop1 = "SomeValue";
ovm.Prop2 = "SomeOtherValue";
.
.
.
//then we assign back
TempData["optionsVm"] = ovm;
//we do then ADFS Authentication Challenge as below and it works
var ctx = Request.GetOwinContext();
string provider = "ADFSProvider";
//ctx.Authentication.SignOut();
ctx.Authentication.Challenge(
new AuthenticationProperties
{
RedirectUri =
Url.Action("**LoginCallbackBerkleyMarineAdfs**", "Account", new { provider })
},
provider);
return new HttpUnauthorizedResult();
}
public ActionResult LoginCallbackBerkleyMarineAdfs(FormCollection collection)
{
//Here TempData["optionsVm"] is null
}
Я использовал TempData.Keep("optionsVm") и TempData.Peek("optionsVm") в методе внешнего входа перед перенаправлением из ADFS, но безрезультатно.
Это работает иногда и не работает в другие времена. И действительно это боль.
Надеюсь, я получу ответ от вас, ребята. Спасибо.
------------- Подробнее о настройке и чтении TempData ["OptionsVm"]
@{
QuickQuoteForm optionsVm = (QuickQuoteForm)TempData["optionsVm"];
}
<form id="ins-details" action="ExternalLogin" ...>
@Html.Hidden("equipmentDeductible", optionsVm.Deductible)
@{TempData["optionsVm"] = optionsVm;}
<form/>
Здесь, когда форма становится опубликованной, она переходит к методу внешнего входа в исходный вопрос