我可以在外部DLL中使用ASP.NET Session []变量

Jon*_*Jon 5 c# asp.net session-variables session-state

我有两个项目,DLL项目,它有我所有的逻辑和数据访问的东西,和ASP.NET项目,我的表单等.

我有点困惑.我想如果我将System.Web命名空间引用添加到DLL项目,我将能够引用ASP.NET页面的会话状态信息.

我可以使用每个页面来获取会话信息并将其传递给DLL进行处理,但是希望能够直接从DLL类处理事物.

这可能吗?

我摆弄了System.Web命名空间,似乎能够获得对Session变量的引用.

谢谢大家.

乔恩

Tom*_*son 11

只要程序集加载在Session的范围内,它就可以访问.

虽然不推荐这种紧耦合型.


Jos*_*rke 10

您应该能够使用HttpContext.Current.Session

编辑

虽然是,但我同意您不应将Business Logic DAL或其他程序集紧密地耦合到ASP.Net会话.有很多有效的案例可以在Web项目之外访问HTTP Context.

Web控件是最好的例子之一,可重用的http模块等等......

现在有一个选项,如果你想让你的DLL从Session中提取东西就是抽象出会话.因此,您可以定义一个类似IStorage的界面,您的库将知道如何使用.然后你可以有一个SessionStorage或MemoryStorage类,并使用IoC将适当的类注入你的库类.这使您可以自由地编写代码,无需将代码绑定到Session.哦,如果正确完成另外一项好处,可以用来不将你的代码绑定到网络中的会话.