Строки подключения для разных пользователей - PullRequest
0 голосов
/ 25 апреля 2011

Как отправить двух пользователей из разных доменов компании в разные базы данных SQL для извлечения / хранения данных?Я использую переменные приложения для хранения строк подключения, а переменная Request.ServerVariables ("LOGON_USER") является эффективным способом получения доменного имени.Нужно ли изменять файл GLOBAL.AsA?Имена таблиц в обеих базах одинаковы, поэтому я думаю, что изменение строк соединения в зависимости от домена пользователя должно помочь.

Пользователь A с доменом ABC -> Приложение ("ConnecttoDB") отправляется в базу данных A Пользователь B с доменом XYZ -> Приложение ("ConnecttoDB") отправляется в базу данных B

У меня естьпримерно 900+ классических ASP-страниц, поэтому я бы очень не хотел добавить несколько IF-THEN для выбора правильной базы данных на каждой странице.Мы высоко ценим все идеи!

ОБНОВЛЕНИЕ: Чтобы упростить задачу, я представляю одну переменную приложения (например, ConnecttoDB). Однако не будет ли ее значение постоянно меняться каждый раз, когда другой пользователь получает доступ и изменяетстраница результатов?

Ответы [ 3 ]

1 голос
/ 25 апреля 2011

Нельзя использовать переменную приложения, поскольку она используется всеми пользователями.Это было бы условием гонки.Вместо этого вам нужно будет использовать объект Session для хранения соединения, а затем использовать его всякий раз, когда вам нужно подключиться к БД.

myDB=Server.CreateObject("ADODB.Connection") 
StrConn = Session("ConnecttoDB") 
myDB.Open StrConn
0 голосов
/ 25 апреля 2011

Учитывая, что вы используете классический ASP, вы можете определить функцию для возврата соответствующей строки подключения в другой файл .asp и использовать директиву #include, чтобы добавить ее на все ваши страницы.

0 голосов
/ 25 апреля 2011

Вот один из способов сделать это:

Я предполагаю, что ваши классы для вашей веб-страницы содержат файлы, кодирующие класс Page.Создайте новый файл класса в вашем проекте ASP.net, который наследует Page.Назовите это JorgePage.Затем, сделайте так, чтобы ваши классы файлов codebehind наследовали JorgePage.

В JorgePage напишите две функции:

private string getUsersDomain()
{
      // returns the user's domain
}

protected string getUsersConnectionString()
{
    switch (getUsersDomain().ToUpper())
    {
        case "ABC":
        return Application("ConnecttoDB_ABC");
        break;
        case "xYZ":
        return Application("ConnecttoDB_XYZ");
        break;
    }
}

Теперь функция getUsersConnectionString () доступна в контексте всехваши страницы и возвращает правильную строку подключения.Кроме того, у вас есть код только в одном месте, поэтому, если вам потребуется изменить логику позже, вы можете сделать это легко.

...