Ich habe viele Beiträge dazu gelesen, kann aber immer noch nicht funktionieren. Ich benutze Visual Studio 2013. Ich habe ein neues MVC 5-Projekt erstellt und dachte mir, dass es cool wäre, die neue Facebook-Login-Integration zu verwenden. Es funktioniert gut auf meinem PC in IIS Express.
Aber wenn ich es auf den Production Server hochlade, bekomme ich immer die sehr nervige Meldung "No owin.Environment item wurde im Kontext gefunden".
Hier ist was ich getan habe.
Ich habe die Standard-Startup.cs-Klasse, die Folgendes enthält:
%Vor%In der App_Start gibt es eine Startup.Auth.cs-Datei, die enthält:
%Vor%Meine Web.config-Datei enthält:
%Vor%Ich habe auch darauf geachtet, dem Beitrag auf Es wurde kein owin.Environment-Element im Kontext gefunden - nur auf dem Server und das installierte Microsoft.Owin.Host.SystemWeb
Sonst ist noch jemand dran geblieben? Ich habe 3 Tage lang eine Wand geschlagen.
Ich brauchte eine andere web.config-Änderung, um das Problem zu lösen:
%Vor%Obwohl davon ausgegangen wird, dass , wird von dieser Einstellung abgeraten Ich habe es versucht:
%Vor%aber das gab mir den Fehler:
"Die Operation ist aufgrund des aktuellen Status des Objekts nicht gültig"
und ich bin mir nicht sicher, was dort gerade passiert, ob es das falsche Modul oder etwas anderes ist.
Ich hatte das gleiche Problem und es wurde von IIS-Einstellungen verursacht.
Meine IIS-Bereitstellung hatte eine Top-Level-Site mit mehreren Anwendungen darunter. Sie sollten sicherstellen, dass die "Anwendungseinstellungen" Ihrer Site-Ebene nicht mit denen Ihrer Anwendung in Konflikt stehen.
In meinem Fall hatte ich "owin: AutomaticAppStartup = false" auf der Site-Ebene, die von meiner Anwendung geerbt wurde.
Zusammenfassung:
Bearbeiten: Ich habe festgestellt, dass Sie einfach die folgende appSetting in web.config hinzufügen können, um mögliche erbliche Konflikte zu überschreiben. Ich würde empfehlen, zu verstehen, ob es zuerst Konflikte gibt, damit Sie eine fundierte Änderung vornehmen können.
%Vor%Haben Sie den Modus des App-Pools überprüft? OWIN arbeitet mit dem integrierten Modus des App-Pools. Es funktioniert nicht im klassischen Modus.
Wenn Sie die Ausnahme "No owin.Environment item wurde im Kontext gefunden." von Request.GetOwinContext () bedeutet dies normalerweise, dass die Erkennung der OWIN-Startup-Klasse fehlgeschlagen ist.
Stellen Sie sicher, dass IIS den Code in Startup.cs (im Stammordner) beim Start ausführt. Um zu überprüfen, ob es auf einem Produktionsserver funktioniert, würde ich Folgendes empfehlen. 1) Fügen Sie die folgende Zeile ein:
%Vor%2) Rufen Sie das DebugView-Dienstprogramm von hier auf: Ссылка
3) Führen Sie DbgView.exe als Administrator aus und stellen Sie sicher, dass die Option "Capture / Capture Global Win32" aktiviert ist.
4) Beim Starten von IIS sollte eine Ablaufverfolgungsmeldung aus dem obigen Code angezeigt werden (stellen Sie sicher, dass sie durch Berühren von web.config neu gestartet wird).
5) Wenn es nicht ausgeführt wird, klicken Sie hier: Ссылка
Es gibt eine Reihe von Gründen, warum es nicht ausgeführt wird. Viele von ihnen sind auf Stackoverflow. Eine weitere, die ich hinzufügen werde ist diese: Stellen Sie sicher, dass Sie nicht die Einstellung "Batch = false" auf dem "Kompilierungsknoten" von web.config haben.
Ich habe damit für Tage gekämpft !! Versuchte alles in jedem Beitrag, den ich finden konnte, und das behob das Problem. Ich habe in VS 2013 entwickelt und auf einer Server 2008-VM veröffentlicht, und ich erhielt immer die gleiche Nachricht "No owin.Environment-Element wurde im Kontext gefunden".
Ich habe diesen Eintrag in Web-Konfiguration für Module und es repariert es. Ich bin mir nicht sicher, ob ich verstehe, warum es es repariert hat, aber es hat es getan.
%Vor%Was passiert, ist, dass Ihr BIN die Referenz nicht enthält. In den Einstellungen ändern Sie es auf "Copy Local" auf TRUE. dann veröffentlichen Sie es erneut.
Tags und Links c# owin visual-studio-2013