Ответ 1
В ASP.NET MVC абстракции над классическими объектами HttpContext были введены запрос, ответ, сеанс. Они представляют абстрактные классы и раскрываются во всей структуре 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, в котором у вас есть голый сеанс.