从类库访问用户上下文

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 应用程序

以上是关于从类库访问用户上下文的主要内容,如果未能解决你的问题,请参考以下文章

从类库中访问文件

从类库访问 Asp.net-core 中的 appsetting.json

如何从类的方法传递意图的上下文?

从类组件更新 Reacts 上下文值

从类路径加载 jar 的 context.xml

asp.net MVC - 我可以从类库中引用视图吗?