Ich habe ein .NET Core-Projekt (eine Klassenbibliothek) erstellt, das auch auf .NET 4.6 abzielt, das auf den aktuellen HTTP-Kontext zugreifen können muss. Ich sehe, dass wir nicht mehr die statische HttpContext.Current
verwenden können und eine Instanz von IHttpContextAccessor
injizieren müssen. Kann ich das noch in einem Web-API-Projekt verwenden, das auf .NET 4.6 abzielt? Bisher kann ich HttpContextAccessor.HttpContext
nichts als null zurückgeben.Verwenden von HttpContextAccessor in einem .NET 4.6-Projekt
Antwort
Für die Klassenbibliothek denke ich, dass Sie die relevanten Variablen/Objekte möglicherweise über Konstruktor oder Methoden übergeben möchten. Es ist eine gute Übung, weil Ihre Klassenbibliothek nicht bricht, wenn Sie sie beispielsweise in einer Konsolenanwendung ohne httpcontext referenzieren.
Wenn Sie sich in einer Controller-Methode befinden, können Sie einfach Request oder Response verwenden.
Hmm, nun, es ist für eine Logging-Bibliothek, die ziemlich viele Details über die HTTP-Anfrage protokollieren muss, so dass ich nicht alle Details der Anfrage angeben muss, wenn jemand etwas protokollieren muss. – Tom
Haben Sie 'HttpContextAccessor' registriert? –
Sie möchten, dass derselbe Code sowohl auf ASP.NET als auch auf ASP.NET Core funktioniert? Ich bin mir nicht sicher, ob das in diesem Fall möglich ist. – svick
@ademcaglin Nun von was ich verstehe, müssen Sie IApplicationBuilder verwenden, um es zu registrieren, die ich nicht in ASP.NET habe. – Tom