Проблемы со входом в общее состояние сеанса SQLServer веб-фермы - PullRequest
0 голосов
/ 05 октября 2010

За вопрос, который я отправил вчера , структура DNS нашего веб-сайта изменилась на циклический DNS, который буквально переключается между двумя рабочими серверами.Наш web.config для обоих серверов prod имеет:

  • <sessionState mode="SQLServer" ... >, указывающий на одну и ту же общую базу данных
  • A machineKey на каждом сервере, который согласован между этими двумя (это былоосновной смысл моего сообщения вчера).
  • [ update ] Тот же домен в теге <forms domain=".mydomain.com" ... >

Когда мы используем функцию входа в систему наsite, логин фактически отправляет запрос веб-службы третьему веб-сайту, который аутентифицирует пользователя.Если в полученном ответе говорится, что это был успешный вход в систему, то мы используем FormsAuthentication для входа пользователя в систему:

FormsAuthentication.SetAuthCookie(strUserID, true);

Наша проблема в том, что на некоторых страницах мы видим, что мы вошли в систему, на других мыне.Является ли это чем-то показательным, если мы не выполнили последний шаг, чтобы разделить сеанс между двумя серверами prod, или наша база данных сеанса SQL-сервера была повреждена?

Заранее спасибо

UPDATE : Наш код для определения того, вошел ли пользователь в систему, довольно прост:

HttpContext.Current.User.Identity.IsAuthenticated

ОБНОВЛЕНИЕ 2 :

Когда я нажимаю prod1.mysite.com (илиprod2.mysite.com) Я получаю файл cookie с именем "ASP.NET_SessionId", но когда я перехожу на общедоступный URL-адрес www.mysite.com, я не получаю этот файл cookie.Является ли это частью проблемы?

РАЗРЕШЕНИЕ :

Оказывается, все, что мы здесь сделали, было правильно, и что наш живой сайт, использующий Akamai, кэшировался вразличные состояния из-за конфигурации кэша Akamai.Совместное использование зарегистрированного состояния между серверами подтверждено для работы.

1 Ответ

0 голосов
/ 05 октября 2010

Одна вещь, которую вы могли бы сделать, это использовать надстройку Firebug для Firefox, чтобы гарантировать, что cookie-файл аутентификации отправляется в браузер, как и ожидалось, после входа в систему, хотя, как вы видите, вы вошли в систему на некоторых страницах, я ожидаюэто должно быть так.
Еще одна вещь, которую нужно проверить, это то, что домен правильно настроен для куки-файла аутентификации и что он действителен для всех страниц вашего сайта.
Обычно это задается в вашем файле web.config втеги форм, пример ниже и должны быть одинаковыми на каждом сервере в веб-ферме.

<authentication mode="Forms">
    <forms name="yourAuthCookie" loginUrl="/login.aspx" protection="All" path="/" domain="mydomain.com" timeout="30"/>
</authentication>

Если это все правильно, то возможно, что сеанс не распределяется должным образом между вашими серверами, хотя настройки, которые вы описали в своем вопросе, по-видимому, покрывают то, что нужно.

...