从类库访问用户上下文
Posted
技术标签:
【中文标题】从类库访问用户上下文【英文标题】:Access User context from a class library 【发布时间】:2010-10-22 06:45:54 【问题描述】:背景:
我有一个 win 应用程序和一个 web 应用程序和一个 共享类库。 在我的类库中我有一些静态的 用于 SQL 查询的方法 我的 SQL 连接字符串 我将我的 SQL 连接字符串存储在一个 会话变量,因为它设置在 登录时间确定 使用哪个数据库。 我的类库无法访问我的会话 变量(是的,我当然可以使用 HttpContext.Current ...,但这不会 在我的 winapp 中工作)解决方案?
我设想了一种解决方案,其中我为当前的用户/上下文创建了一个类,并在创建它时注入了首选行为,如下所示:
UserContex current = new UserContext();
current.SessionHandler = new AspNetSessionHandler();
但是,我想要一个静态类,我可以使用它而不必一直传递它,然后它会从会话中获取它的变量(如果在网络应用程序中使用)或从其他地方(我不是winapp 开发人员)如果在 winform 中使用。
我会尝试想出这种东西,但如果我找到了一个已经可行的解决方案,那就太好了,这就是为什么我呼吁你们共同的集体疯狂
【问题讨论】:
您好W先生,我也遇到了同样的问题,请问您是怎么解决的 【参考方案1】:Csla 包含使用静态 ApplicationContext 类的类似设置,该类在 Rockford Lhotka 的书 Expert C# Business Objects 中进行了讨论...为了处理连接字符串问题,我建议创建一个 DataConnection 类,该类从配置中返回静态连接字符串以这种方式文件,无论连接字符串来自 Web.config 还是 App.config
public class DataConnection
public static string NameOfConnection
get
return ConfigurationManager.ConnectionStrings["NameOfConnection"].ConnectionString;
【讨论】:
嗯,就是这样。我需要从我的 Session 变量中读取连接字符串,因为它因登录者而异。 您可以将确定用户连接字符串的逻辑移到 DataConnection 类中,这样它既适用于 win 应用程序,也适用于 web 应用程序以上是关于从类库访问用户上下文的主要内容,如果未能解决你的问题,请参考以下文章