Dre*_*kes 58 .net asp.net session-state asp.net-mvc-3
我在ASP.NET MVC中看到了两种使用会话数据的方法:
System.Web.SessionState.HttpSessionState,可用 HttpApplicationSystem.Web.HttpSessionStateBase,可用 Controller存储在一个中的数据似乎在另一个中可用.
不幸的是System.Object,这两种类型的唯一共同祖先是,这意味着我不能为任何一种抽象创建可重用的实用程序代码.
为什么API会这样?我失踪的两者之间是否有重要区别?
Dar*_*rov 90
在ASP.NET MVC中,对经典的HttpContext对象进行了抽象,引入了Request,Response,Session.它们代表抽象类,并且在整个MVC框架中公开,以隐藏底层上下文并简化单元测试,因为抽象类可以被模拟.
例如,您拥有的会话对象HttpSessionStateBase及其实现HttpSessionStateWrapper.
这是一个如何在经典ASP.NET会话和抽象之间进行转换的示例:
HttpSessionStateBase session = new HttpSessionStateWrapper(HttpContext.Current.Session);
Run Code Online (Sandbox Code Playgroud)
所以System.Web.SessionState.HttpSessionState你所指的是自经典ASP.NET 1.0以来存在的底层会话对象.在MVC中,这个对象被包装成一个HttpSessionStateWrapper.但是,由于ASP.NET MVC是一个ASP.NET应用程序,您仍然可以获得具有裸会话的Global.asax.
| 归档时间: |
|
| 查看次数: |
11554 次 |
| 最近记录: |