2015-01-02 5 views
7

Ich habe eine selbst gehostete owin Web Api und ich versuche, eine einzige Instanz meiner EF Context per Owin Request zu verwenden. Hier ist mein Konfigurationscode für die Startup-Klasse.Warum bekomme ich "Kann das Symbol 'CreatePerOwinContext' nicht auflösen?"

public void Configuration(IAppBuilder app) 
{   
    app.CreatePerOwinContext(A3Context.Create); 
} 

Dies wird nicht erstellt, weil ich den folgenden Fehler erhalte.

Fehler

5 'Owin.IAppBuilder' enthält keine Definition für 'CreatePerOwinContext' und keine Erweiterungsmethode 'CreatePerOwinContext' ein erstes Argument vom Typ akzeptieren 'Owin.IAppBuilder' gefunden werden konnte (fehlt Ihnen eine using-Direktive oder eine Assembly-Referenz?)

Ich vermisse eine Referenz, die mir nicht bekannt ist?

+0

ähnliches Problem? http://stackoverflow.com/questions/23057459/owin-iappbuilder-does-not-contain-a-definition-for-mapsignalr – Loathing

+0

Ich glaube nicht. Keine der Versionen, die ich verwende, stimmen mit denen überein, die in deinem Link erwähnt werden. –

Antwort

16

CreatePerOwinContext ist eine Erweiterungsmethode im Microsoft.AspNet.Identity.Owin NuGet-Paket.

Um offene Paket-Manager-Konsole für Ihr Projekt zu lösen und mit dem folgenden Befehl installieren:

Install-Package Microsoft.AspNet.Identity.Owin 

Stellen Sie sicher, Sie verweisen den Namespace die Erweiterungsmethode enthält:

using Owin; 
+0

Gleicher Fehler aber .... "Web hat bereits einen Verweis auf 'Microsoft.AspNet.Identity.Owin 2.2.1'." –

+0

Resharper gab mir die Möglichkeit, einen Verweis auf die DLL hinzuzufügen, und es hat funktioniert. Muss eine Verwechslung in dem Projekt gewesen sein. –

+1

@IanWarburton - Froh, dass Sie es aufgeklärt haben. Dieser Fehler bedeutet, dass sich das Paket bereits in der packages.config für das Projekt befindet, für das Sie den Befehl ausführen. Beachten Sie Folgendes: Wenn Sie mehrere Projekte haben, muss jedes Projekt, das diesen Code aufruft, dieses Paket in seiner eigenen packages.config haben. Resharper wird dieses Bit für Sie nicht tun, es kopiert nur die DLL-Referenz. Dies bedeutet, dass nuget bei einem neuen Checkout die Lösung für einen Gebäudezustand nicht wiederherstellen wird. Wenn die DLL es hat, müssen Sie nur sicherstellen, dass Sie "Owin verwenden"; Namespace für den Zugriff auf die Erweiterungsmethode. – cchamberlain