Dostęp do HttpContext w Class Library-ASP.NET MVC


Wypełniam wystąpienie klasy, która reprezentuje zmienną sesji i istnieje w bibliotece klas. Muszę wypełnić jedną właściwość, która wymaga dostępu do obiektu
Request
. Rozumiem, że mogę użyć
System.Web.HttpContext.Current.Request
, aby uzyskać obiekt żądania?
To jest dobra praktyka. Coś mi mówi, że powinienem to zrobić na kontrolerze (lub kontrolerze podstawowym), który ma przestrzeń nazw
System.Web
.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

To dobra praktyka - obiekt jest dostępny - jeśli projekt narzuca do niego dostęp, to zrób to jak najbardziej. Jedną z opcji jest przekazanie wystąpienia żądania do konstruktora klasy, jeśli to sprawia, że ​​czujesz się czystszy :)
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zasadniczo nie ma w tym nic złego, o ile weźmiesz zależność od
System.Web.Abstractions
i przekażesz odniesienie do
HttpRequestBase
do swojej klasy. Klasy w tym zestawie nie są zapieczętowane, a wszystkie elementy członkowskie są wirtualne, co oznacza, że ​​Twoja klasa będzie nadal testowalna.
Aby uzyskać więcej informacji, zobacz odpowiedzi na następujące pytania

pytanie
https://coderoad.ru/720991/
SO
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Według

Teemu Keiski
http://forums.asp.net/members/joteke.aspx
na forach ASP.NET:

Możesz użyć
System.Web.HttpContext.Current
, ale jest to zła praktyka
ponieważ sprawia, że ​​Twoja biblioteka klas jest całkowicie bezużyteczna poza siecią
-applications (a jeśli uzyskujesz dostęp do sesji za jego pośrednictwem, również dostajesz
bezużyteczne dla usług internetowych w większości scenariuszy).
Wszystko, co przekazujesz, pobierając bezpośredni HttpContext, może zostać przekazane jako
parametry do klasy, która tego potrzebuje. A jeśli potrzebujesz dostępu
Obiekt odpowiedzi można przekazać bezpośrednio do
Response.OutputStream

klasa (która zaakceptuje ją jako ogólny obiekt strumienia)

<sup>
Źródło:

http://forums.asp.net/post/1311405. aspx
http://forums.asp.net/post/1311405.aspx
</sup>

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się