如何将连接字符串保存在应用程序变量中

本文关键字:存在 应用程序 变量 保存 字符串 连接 | 更新日期: 2023-09-27 18:18:49

在登录页面中,我通过以下代码确定用户是否为admin:

if (r.IsUserInRole(txtUserUsername.Text, "User") == true)
{
    connection = ConfigurationManager.ConnectionStrings["GameHutDBEntities1"].ToString();
    switch (new BusinessLayer.Users().ValidateLogin(txtUserUsername.Text, txtUserPassword.Text, connection))
    {
        case Helpers.LoginStatus.LoginSuccessful:
        {
            Response.Write("<Script> alert('Welcome to GameHut Admin Panel!')</Script>");
            FormsAuthentication.RedirectFromLoginPage(txtUserUsername.Text, chkRemember.Checked);
            break;
        }
        case Helpers.LoginStatus.Blocked:
        {
            Response.Write("<Script> alert('Account Blocked')</Script>");
            break;
        }
        case Helpers.LoginStatus.Invalid:
        {
            Response.Write("<Script> alert('Invalid username or password')</Script>");
            break;
        }
    }
}

在连接类中,我按如下方式传递连接字符串:

public class ConnectionClass
{
    public GameHutDBEntities Entities { get; set; }
    public System.Data.IDbTransaction Transaction { get; set; }
    public ConnectionClass()
    {
        this.Entities = new GameHutDBEntities();
    }
    public ConnectionClass(GameHutDBEntities _Entities)
    {
        this.Entities = _Entities;
    }
    public ConnectionClass(GameHutDBEntities _Entities, string conn)
    {
        this.Entities = _Entities;
        this.Entities.Connection.ConnectionString = conn;
    }
}

管理员被记录并重定向到另一个页面后,连接字符串丢失并设置默认连接字符串?有人能告诉我如何保持连接字符串,只要用户登出。

如何将连接字符串保存在应用程序变量中

这是因为您在web表单代码中实例化类,并且由于ASP,当您切换到另一个页面时,实例化对象丢失。净无国籍。

如果需要重用连接字符串,将其保存在会话变量中:

Session["conn"] = "connection string";

你可以在任何你想要的地方重用它。

还有其他几个选项,比如缓存,或者静态属性,甚至每次你想要使用它时都从配置中读取它。这完全取决于使用的上下文。

编辑:

要从配置中读取连接字符串,可以使用System.Configuration中的ConfigurationManager类:

string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

将连接字符串名称保留在数据访问层内,并从Web读取。