【问题标题】: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先生,我也遇到了同样的问题,请问您是怎么​​解决的

标签: c# asp.net design-patterns class


【解决方案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 应用程序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 2019-06-13
  • 2019-12-16
  • 2017-12-08
相关资源
最近更新 更多