Heim >Backend-Entwicklung >C#.Net-Tutorial >ASP.NET kann nicht feststellen, dass der Benutzer angemeldet ist und die Sitzung in IE10 verloren geht
Heute habe ich festgestellt, dass die Seite immer automatisch zur Anmeldeseite zurückkehrt, wenn ich mich im IE10 bei einer der Websites meines Unternehmens anmelde und darauf klicke. Nach der Überprüfung habe ich festgestellt, dass kein Problem mit dem HTTP-Header vorliegt und .AUTH-Cookie, das von IE10 gesendet wird, aber mithilfe des Formularauthentifizierungsmechanismus (FormsAuthentication) nicht feststellen kann, dass sich der Benutzer angemeldet hat, und die gespeicherte Sitzung immer verloren geht
Anschließend wurde bestätigt, dass es sich um einen Fehler handelt in ASP.NET 2.0, 3.5 und 4.0, da diese Versionen die Headerzeichenfolge „User of IE10 -Agent“ nicht erkennen können, sodass die Version des Browsers des Benutzers nicht identifiziert werden kann, was zum Ausfall bestimmter Funktionen von ASP.NET führt Ich gehe davon aus, dass der Browser die Cookies-Funktion nicht unterstützt und keinen Cookie-bezogenen Code usw. verarbeitet, was dazu führt, dass der Browser fehlschlägt. Die vom Server zurückgegebene Sitzungs-ID wird nicht gespeichert, was zu Verlusten usw. führt.
Dieses Problem wurde von Microsoft offiziell bestätigt und ist ein Fehler von IE10. Zur Behebung dieses Problems wurden außerdem zwei HOTFIX-Fehler veröffentlicht. Wenn Sie auf dasselbe Problem stoßen, lesen Sie bitte die folgenden Anweisungen:
KB2600088: Hotfix gilt zu ASP.NET in Microsoft.NET Framework 4.0 [Englisch]
KB2608565: Hotfix gilt für ASP.NET in .NET Framework 3.5.1 [Englisch]
KB2600100: Hotfix gilt für ASP.NET in . NET Framework 3.5 SP1 und .NET Framework 2.0 SP2 [Englisch]
Die einfache Lösung besteht darin, eine Browserdefinitionsdatei im Stammverzeichnis der Website hinzuzufügen (Browserdefinitionsdatei)
Die Schritte sind wie folgt:
1. Fügen Sie einen „App_Browsers“-Ordner hinzu
2. Fügen Sie eine Datei mit dem Suffix „*.browser“ hinzu, z. B. IE10.browser. 3. Fügen Sie den Dateiinhalt wie folgt hinzu:
<browsers> <browser refID="Default"> <capabilities><!-- To avoid wrong detections of e.g. IE10 --> <capability name="cookies" value="true" /> <capability name="ecmascriptversion" value="3.0" /> </capabilities> </browser> </browsers>