Как обнаружить события, когда пользователь переходит из одного семейства сайтов в другое в том же веб-приложении?
У меня есть несколько семейств сайтов в одном веб-приложении, и мне нужно обрабатывать события, когда пользователь переходит из одного семейства сайтов в другое. Он мне нужен для конкретных действий, таких как установка cookie-файла "lcid" для изменения языка сайта по умолчанию и значений утверждений для сопоставления свойств пользователя.
В настоящее время я использую пользовательский модуль HTTP, который обрабатывает все запросы веб-приложений PostAuthorize и проверяет текущего пользователя и семейство сайтов, хранит последний посещенный сайт для каждого пользователя в коллекции и запускает настраиваемое событие для подписчиков, когда обнаруживает переход между семействами сайтов.
Но я думаю, что такой подход замедляет производительность веб-приложения. И из журналов я вижу, что существует много запросов PostAuthorize, даже когда пользователь просто нажимает ссылку на страницу в другом семействе сайтов. Кроме того, в подобных случаях иногда возникает серия запросов к "следующему" семейству сайтов, затем к "предыдущему", а затем снова к "следующему". Также есть некоторые проблемы с SharePoint Designer (невозможно редактировать страницу), когда этот модуль активен.
Не могли бы вы дать мне совет с лучшими подходами для этой задачи? Заранее спасибо.
1 ответ
1 способ - использовать скрытый контроль и куки.
Держите скрытый контроль на всех главных страницах всех целевых коллекций сайтов. Этот элемент управления проверяет текущий URL-адрес семейства сайтов и сохраняет его в файле cookie. Возможно, в том же файле cookie, где вы храните lcid.
После следующей загрузки он будет пытаться сопоставить URL в файле cookie и текущий URL семейства сайтов. Если это не так, позвоните по коду, который вы хотите выполнить, и обновите URL в файле cookie.
Это будет намного легче по производительности, чем httpmodule.