У меня есть несколько сайтов ASP.NET, работающих на одном сервере IIS, конечно, с использованием разных портов. Сайты позволяют входить в систему через аутентификацию с помощью форм. Состояние сеанса хранится на локальном сервере состояний. Моя проблема в том, что когда пользователь входит на один сайт, а затем переходит на другой, он получает исключение со второго сайта и должен закрыть / снова открыть свой веб-браузер, чтобы получить к нему доступ. Я предполагаю, что файл cookie с первого сайта создает впечатление, что они вошли в систему и на втором (хотя я могу ошибаться в этом).

Я пробовал несколько вещей, чтобы исправить это (которые, вероятно, глупые и не имеют ничего общего с проблемой, но я далек от эксперта по ASP.NET), включая: 1) предоставление сайтам разных имен файлов cookie в Web.config тег sessionState и 2) Перемещение сайтов в разные пулы приложений, но проблема не устранена. Любая помощь будет оценена по достоинству.

0
Vadim P 26 Мар 2013 в 20:48

1 ответ

Лучший ответ

Я бы рекомендовал настроить разные домены для каждого сайта. Если это локально, используйте файл хоста для маршрутизации local.site1.com и local.site2.com в нужное место. Очевидно, вам придется оставить порт. Затем вы должны установить cookie с другим доменом для каждого сайта и не вызывать путаницу.

2
Rob Allen 26 Мар 2013 в 20:59
Это отличная идея, но здесь она проблематична, потому что у нас нет других серверов с несколькими доменами, и наша команда по инфраструктуре не решается, чтобы этот сервер был единственным (поскольку, если что-то произойдет в нерабочее время, сотрудники службы поддержки могут не разбираться в конфигурации). Это внутренний сервер в нашей интрасети, и мы используем WINS, поэтому * .server не разрешается автоматически на сервер.
 – 
Vadim P
26 Мар 2013 в 21:43
1
В этом случае кажется, что вам придется написать httpmodule, который будет проверять cookie на наличие некоторых пользовательских данных, которые будут зависимо удалять / истекать cookie из запроса, а затем записывать соответствующие данные обратно в ответ. Например, возможно, записать имя приложения в пользовательские данные в каждом приложении при каждом ответе, затем в каждом приложении проверять запрос на наличие этих данных и предпринимать соответствующие действия в формах auth cookie. Это очень плохое решение, но я не знаю, что еще делать.
 – 
Rob Allen
26 Мар 2013 в 23:46