2016-06-28 10 views
0

ich diese Störung erhalte, wenn ich Session-Variablen und ich Folgendes tun:ADFS anmelden Fehler, wenn Session varialbles in MVC verwendet

1) Melden Sie sich über ADFS in und Zugriff auf die Anwendung 2) Haben Operationen 3) Schließen Sie alle Browsersitzungen. (Passiert sowohl in IE als auch in Chrome) 4) Ich versuche mich über ADFS erneut anzumelden und es leitet ungefähr 4 Mal um und es wirft den Fehler.

IIS muss neu gestartet werden, damit die Anwendung funktioniert, da sie die Anwendung global beeinflusst. Keiner der Benutzer kann darauf zugreifen, sobald dieser Fehler auftritt.

Ich verengte es auf Session-Variablen, auch wenn ich TempData, ViewBag, ViewData verwenden gibt es den Fehler. Wenn ich die Sitzungsvariablen entferne, funktioniert es nicht.

Irgendwelche Ideen, warum Session-Variablen den Fehler verursachen?

[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); 
    } 

Client Side

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); 
    }); 

Antwort

1

Ich war genau das gleiche Problem mit und ich erkannte auch die Verwendung von Session-Variablen war es nach unten.

Der Grund dafür ist, dass die Sitzungsvariablen mit dem Cookie kollidieren, der von den OWIN-Antwortheadern festgelegt wird. Die Problemumgehung für dieses Problem besteht darin, einen benutzerdefinierten Cookie-Manager zu erstellen. Dies löste das Problem für mich

Dieser Microsoft Artikel beschreibt das Problem und stellt auch Code-Beispiele für das Erstellen eines benutzerdefinierten Cookie-Manager: https://blogs.msdn.microsoft.com/dsnotes/2016/08/25/owin-cookies-signin-error-with-ad-fs/

+0

Danke Steve. Ich habe diese Lösung noch nicht versucht, aber das macht Sinn. Leider habe ich meine App aufgegeben, keine Session-Variablen in meiner Anwendung zu verwenden. – Apollo

+0

Ich wünschte, ich könnte mehrfach dafür stimmen! Es dauerte eine Weile, bis ich das gefunden habe, aber es funktioniert wie ein Zauber - danke. – AS2012