2013-08-14 15 views
22

Microsoft kürzlich introduced neue ASP.NET-Identität - Ersatz für alte (einfache) Mitgliedschaft. Leider kann ich dieses neue Mitgliedschaftssystem in meinem alten Projekt nicht verwenden, da es System.InvalidOperationException auslöst: Im Kontext wurde kein owin.Environment-Element gefunden. Dies ist eine bekannte bug, aber Microsoft schweigt über dieses Problem. Der einfachste Weg, um diesen Fehler zu reproduzieren - es ist eine neue Web-Anwendung (MVC, WebForms oder WebApi - spielt keine Rolle) in VS 2013 (mit Web Tools 2013 Vorschau Aktualisieren) und dann auf die Anmeldeseite gehen. Es wird klappen. Ändern Sie dann den Namespace in Ihrer Anwendung in einen anderen als den ursprünglichen Namespace, und die Anmeldeseite wird diesen Fehler auslösen. Das Ändern des Namespace auf das Original (dasjenige, das Sie bei der Erstellung eines Projekts verwendet haben) wird dieses Problem lösen.Kein owin.Environment-Element wurde im Kontext gefunden

Es sieht aus wie .net speichert irgendwo etwas mit dem ursprünglichen Namespace, aber ich kann nicht finden, was und wo, es ist nicht im Projektordner. Ich weiß, dass stackoverflow kein Platz für einen Fehlerbericht ist, ich hoffe nur, dass jemand bereits eine Lösung für dieses Problem gefunden hat, oder vielleicht werden Leute, die an der Entwicklung von ASP.NET Identity beteiligt sind, dies sehen.

Antwort

22

Höchstwahrscheinlich kann die OWIN-Startup-Klasse nicht gefunden werden. Die Standardkonvention für die Startup-Klasse lautet [AssemblyName] .Startup. Wenn Sie dieser Konvention nicht mehr folgen, müssen Sie den vollständigen Namen Ihrer Startup-Klasse in der Web.Config angeben.

Die nächste Version von Microsoft.Owin.Host.SystemWeb Paket wirft nun detaillierte Ausnahmemeldungen, wenn die Startup-Klasse nicht gefunden werden kann.

+10

Hinzufügen in der web.config behoben dieses Problem. Vielen Dank! – graycrow

5

Ich habe zwei neue Projekte TesteMvc5.2 und TesteMvc5.0 und beide genannt nicht

das ist am Anfang funktioniert hat, weil der Standard-Namespace aus dem Assembly-Namen unterscheidet. aber nachdem ich die Linie setzen

<add key="owin:AppStartup" value="TesteMvc5._2.Startup, TesteMvc5.2" /> 

auf der web.config es funktionierte gut.

3

Ich hatte das gleiche Problem. Ich habe es mit der web.config behoben.

Allerdings hatte ich den Assemblynamen und Namespace geändert und den ursprünglichen Assemblynamen nirgendwo mehr gefunden.

Ich entdeckte dann, dass sauber die ursprüngliche Baugruppe aus dem Papierkorb nicht löschte.

Nachdem ich den Papierkorb gelöscht hatte, konnte ich den web.config OWIN-Eintrag entfernen.

+0

clean die bin und obj-Verzeichnis hat den Trick auch für mich (in Kombination mit der web.config Änderung). – markwilde

1

Wenn Sie die unten config MVC4 kopiert haben passiert, sollten Sie es von web.config entfernen

<add key="owin:AutomaticAppStartup" value="false" /> 
+0

Das hat es für mich behoben. – Whelkaholism

4

Ich habe versucht, alles auf dieser Seite erwähnt, aber nichts funktionierte. Dann habe ich über eine Einstellung in IIS mit dem Namen owin herausgefunden: AutomaticAppStartup. Sie finden es auf der Seite Anwendungseinstellungen des IIS-Managers für die Standardwebsite. Überprüfen Sie, ob diese Einstellung zutrifft. Wenn nicht auf "True" festgelegt Das hat für mich funktioniert.

Dies ist die Website, wo ich die Antwort gefunden: http://gotoanswer.stanford.edu/?q=Microsoft.Owin.Host.SystemWeb+and+still+getting+No+owin.Environment+item+was+found+in+the+context

+1

Also gibt es eigentlich zwei Schritte: 1 add vorgeschlagen von Luiz und 2.

+0

Arvind, könntest du bitte mehr von deiner web.config posten, um zu zeigen, wie das funktioniert? Vielen Dank! – curious1

+1

@Ron, dieser Link ist gebrochen – KevinDeus

5

ich das gleiche Problem hatte, wurde es, nachdem sichergestellt diese Linie in Web war fixiert.config:

<add key="owin:AutomaticAppStartup" value="true" /> 
2

Reinigung ASP.NET temporäre Dateien half mir mit diesem Problem genau

4

ich genau das gleiche Fehler gehabt, aber es stellte sich heraus, dass ich hatte ein anderes Konfigurationsproblem in meinem web.config. Meine web.config fehlte das Attribut defaultLanguage = "C#" im Kompilierungselement unter system.web.

In diesem Fall wird standardmäßig VB verwendet. Wenn Sie Ihre Startup-Klasse nicht in VB geschrieben haben, sollten Sie die Standardsprache in C# ändern.

nicht korrekt:

<compilation debug="true" optimizeCompilations="true" targetFramework="4.6.1"> 

Dieses korrekt ist (es sei denn, Sie VB verwenden):

<compilation debug="true" defaultLanguage="c#" optimizeCompilations="true" targetFramework="4.6.1"> 
+1

Danke. Dies hat es für mich mit einem EPiServer Alloy Projekt behoben. –

-1

Standardsprache Hinzufügen in web.config Compilation hat es für mich!

+0

Willkommen beim Stack Overflow. Sie sollten Ihrer Antwort eine Beschreibung hinzufügen. Ein Satz ist normalerweise nicht genug. – filipst

+0

es ist wichtig, dass defaultLanguage auf C# – David

+0

gesetzt ist, also ist es genau das gleiche wie diese Antwort Jahr vor dir erstellt? https://stackoverflow.com/a/35849641/2170171 – Lanorkin