В ASP.NET MVC были представлены абстракции над классическими объектами HttpContext Request, Response, Session.Они представляют абстрактные классы и доступны по всей структуре MVC, чтобы скрыть базовый контекст и упростить модульное тестирование, поскольку абстрактные классы могут быть смоделированы.
Например, для объекта сеанса у вас есть HttpSessionStateBase
и его реализация HttpSessionStateWrapper
.
Вот пример того, как выполнить преобразование между классическим сеансом ASP.NET и абстракцией:
HttpSessionStateBase session = new HttpSessionStateWrapper(HttpContext.Current.Session);
Итак,System.Web.SessionState.HttpSessionState
, на которую вы ссылаетесь, является базовым объектом сеанса, существовавшим со времен классического ASP.NET 1.0.В MVC этот объект обернут в HttpSessionStateWrapper
.Но поскольку ASP.NET MVC является приложением ASP.NET, вы все равно получаете Global.asax, в котором у вас есть пустой сеанс.