Jemand in einem Post hier , kommentiert, dass Sie Verwenden Sie nicht HttpContext.Current, wenn Sie MVC verwenden, stattdessen sollten Sie verwenden ControllerBase.ControllerContext . In gewisser Hinsicht ist dies sinnvoll, in anderen Bereichen jedoch nicht.
ControllerContext ist zum Beispiel eine Instanzvariable, also muss ich überall, wo ich auf meine Sitzungsvariablen verweisen möchte, einen Verweis auf den Controller haben? Warum sollten wir "HttpContext.Current" in MVC nicht verwenden, wenn Sie es noch können? Gibt es einen "geeigneten" MVC-Weg, um an mein Session-Objekt zu kommen, ohne einen Verweis auf den Controller zu haben?
Ich weiß testweise, es ist besser aus Gründen, die an vielen anderen Orten angegeben sind, aber ich arbeite an einem Projekt, das Sitzungsvariablen verwaltet und HttpContext.Current referenziert und ich möchte wissen, ob es einen besseren Weg gibt, meinen zu bekommen übergibt das Session-Objekt, ohne einen Verweis auf den Controller zu übergeben.
Dies liegt hauptsächlich daran, dass Komponententests sehr schwierig sein würden, wenn Sie HttpContext.Current
verwenden, da es nicht möglich ist, diesen Wert mit normalen Mock-Frameworks zu verspotten.
HttpContext.Current
sorgt auch für einen spröderen Code, da er missbraucht und missbraucht werden kann. Beispielsweise können Sie es in der Business-Schicht verwenden, da dies praktisch ist. Es wird jedoch beschädigt, wenn Sie eine andere alternative Darstellungsebene als ASP.NET verwenden.
Im Allgemeinen sind statische Methoden heutzutage verpönt, da sie nicht Abhängigkeitsinjektionen sein können.
Ihr einziger Beitrag war wegen Mock-Tests, wo es abhängig vom Mock vielleicht keinen HttpContext gibt, nur einen Controller-Kontext. Ansonsten verwende ich HttpContext.Current
, nur nicht in meinen Unit-Tests.
Tags und Links asp.net-mvc controller httpcontext