Как сохранить строку подключения в переменной приложения? - PullRequest
1 голос
/ 27 декабря 2011

На странице входа в систему я определяю, является ли пользователь администратором, с помощью следующего кода:

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;
    }
}

После входа администратора и перенаправления на другую страницу строка подключения теряется и строка подключения по умолчанию установлена?Может кто-нибудь сказать мне, как сохранить строку подключения, пока пользователь выходит из системы.

Ответы [ 2 ]

2 голосов
/ 27 декабря 2011

Это потому, что вы создаете экземпляр класса в коде веб-формы, а созданный объект теряется при переключении на другую страницу из-за отсутствия состояния ASP.NET.

Если вам нужно повторно использовать строку подключения, сохраните еев переменной сеанса:

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

вы сможете повторно использовать его где угодно.

Есть несколько других опций, таких как, например, Cache, или статическое свойство, или даже его чтение.из конфигурации каждый раз, когда вы хотите его использовать.Это действительно зависит от контекста использования.

РЕДАКТИРОВАТЬ:

Для чтения строки подключения из конфигурации вы можете использовать класс ConfigurationManager из System.Configuration:

string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
0 голосов
/ 27 декабря 2011

Сохраняйте имя строки подключения внутри слоя доступа к данным и читайте его из Web.config каждый раз, когда вам нужно (или локально кешируйте его).

...