'System.Web.HttpContext' enthält keine definition für 'GetOwinContext' Geheimnis
Erkenne ich diese Frage mag trivial sein, aber es ist die Art von Dingen, die ich finde mich kämpfen mit ziemlich viel und ich will einfach nur der Sinn des ganzen trotz, dass Sie scheinbar eine verlorene Schlacht in .net (bei mir jedenfalls).
So, wenn ich den folgenden Code:
using System.Web;
...
ApplicationUser user = System.Web.HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.User.Identity.GetUserId());
Der den Fehler erzeugt, in den Titel und eine rote GetOwinContext()
und der Fehler Cannot resolve symbol 'GetOwinContext()'
Jedoch, wenn ich den folgenden Code (entfernen System.Web
vor HttpContext
), funktioniert es wie erwartet (oder zumindest keine Fehler):
using System.Web;
...
ApplicationUser user = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.User.Identity.GetUserId());
Jedoch, wenn ich dies tun (gleiche Zeile, die das arbeiten mit using System.Web
auskommentiert):
//using System.Web;
...
ApplicationUser user = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.User.Identity.GetUserId());
Produziert er die gleichen roten GetOwinContext()
und der Fehler Cannot resolve symbol 'GetOwinContext()'
Wenn ich google HttpContext
ich kann nur feststellen, dass es ergibt sich aus System.Web
.
So, die Frage ist, warum kann ich nicht die komplette syntax wie im ersten Beispiel oben? (Auch erwähnt in der Antwort, die hier mit der höchsten Stimmenzahl: ASP.NET MVC-5 - Identität. Wie erhalten Sie die aktuellen ApplicationUser)
UPDATE (auf Adresse duplizieren Frage, Antwort): es gibt Zwar eine Antwort auf diese Frage, die möglicherweise zu dem gleichen Schluss kommen, ich weiß wirklich nicht verstehen, wie dieser ist eine doppelte Frage. Versuchen zu denken, der es von einem Neuling Perspektive und das sezieren von all dem Rauch und Spiegel, die ist .Net. Ich habe nie versucht, etwas zu lernen, so verworren in meinem Leben .Net und manchmal haben Sie Blick auf die Dinge aus vielen verschiedenen Blickwinkeln.
Sah ich diese Frage und eine andere in Bezug auf mit Current,
aber weder fiel mir als 1) als die Antwort, die ich gesucht hatte (zu der Zeit) 2) noch wichtiger ist, warum es ist, sich wie, die. Sam ' s Antwort ist perfekt, obwohl ein bisschen über meinen Kopf. Aber, zumindest jetzt, ich kann gehen, erforschen, was das alles bedeutet...
- von dem, was ich gesehen habe-Controller haben Ihre eigenen HttpContext
Controller.HttpContext
und es ist einSystem.Web.HttpContext
Controller.HttpContext hat GetOwinContext().. beide haben die Sitzung auch, aber denken Sie für eine Sekunde, Sie sind ein und dasselbe 🙂 - möglich, Duplikat der ASP.Net Identität - HttpContext hat keine Erweiterung Methode für GetOwinContext
- Ich beschuldige naming conventions, den ich persönlich nie mochte mit Eigenschaft namens gleiche wie der Typ. Auch die 3. Frage ergibt sich aus der Erweiterung fehlen, wenn es nicht klar ist (siehe @NightOwl888 's link oben)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim schreiben
System.Web.HttpContext
tatsächlich, Sie zeigen eine Klasse. Aber wenn Sie schreibenHttpContext
innerhalb von einem controller, den Sie verwenden, eine Eigenschaft mit dem NamenHttpContext
die ein Objekt zurückgibt, derHttpContext
Klasse. Das könnte man auch erreichen das gleiche Objekt durch den Aufruf derSystem.Web.HttpContext.Current
statische Eigenschaft. Von daher könnte man schreiben:Current
hier in dieser Frage ALSO (here). Leider verlor ich meine wieder rückgängig machen, nachdem mein computer ist abgestürzt, Letzte Nacht, aber ich denke, dass ich versuchte, es nachGetOwinContext()
wie ein dope. Ich denke, deine Antwort ist ein wenig über meinem Kopf im moment, aber ich kann zumindest die Forschung jetzt und verdauen... Danke.Gehen Sie einfach auf NuGet-Pakete-Manager des Projekts, suchen und installieren Sie diese
Microsoft.Owin.Host.SystemWeb
und Sie könnenusing System.Web;
zu aktivierenGetOwinContext()
MethodeDSR ' s Antwort in diesem link hat bei mir
Arbeiten in MVC 5 Identität für E-Mail-Prüfung
Es scheint, Sie haben einen fehlenden NuGet-Paket namens " Microsoft.Owin.Host.SystemWeb'. Installieren Sie dieses Paket von NuGet oder verwenden Sie den Paket-manager-Konsole zu installieren, sagte Paket.
Install-Package Microsoft.Owin.Host.SystemWeb
Hoffe, das hilft.
Dank
es funktioniert in meinem Fall, wenn ich Hinzugefügt
Microsoft.Owin.Host.SystemWeb
ausNugetpackageManager.
Es bietet die extension-Methode
GetOwinContext()
zu denHttpContext
.