Как обнаружить события, когда пользователь переходит из одного семейства сайтов в другое в том же веб-приложении? - PullRequest
3 голосов
/ 29 июля 2011

У меня есть несколько семейств сайтов в одном веб-приложении, и мне нужно обрабатывать события, когда пользователь переходит из одного семейства сайтов в другое.Он мне нужен для конкретных действий, таких как установка cookie-файла «lcid» для изменения языка сайта по умолчанию и значений утверждений для сопоставления свойств пользователя.

В настоящее время я использую настраиваемый модуль HTTP, который обрабатывает все запросы PostAuthorize веб-приложения ипроверяет текущего пользователя и семейство сайтов, удерживает последний посещенный сайт для каждого пользователя в коллекции и запускает пользовательское событие для подписчиков, когда обнаруживает переход между семействами сайтов.

Но я думаю, что такой подход замедляет производительность веб-приложения.И из журналов я вижу, что существует много запросов PostAuthorize, даже когда пользователь просто нажимает ссылку на страницу в другом семействе сайтов.Кроме того, в подобных случаях иногда возникает серия запросов к «следующему» семейству сайтов, затем к «предыдущему», а затем снова к «следующему».Также есть некоторые проблемы с SharePoint Designer (невозможно редактировать страницу), когда этот модуль активен.

Не могли бы вы дать мне совет, как лучше подходить к этой задаче?Заранее спасибо.

1 Ответ

1 голос
/ 15 декабря 2011

1 способ - использовать скрытый элемент управления и cookie.
Держите скрытый контроль на всех главных страницах всех целевых коллекций сайтов. Этот элемент управления проверяет текущий URL-адрес семейства сайтов и сохраняет его в файле cookie. Возможно, в том же файле cookie, где вы храните lcid.
После следующей загрузки он будет пытаться сопоставить URL в файле cookie и текущий URL семейства сайтов. Если это не так, вызовите код, который вы хотите выполнить, и обновите URL в файле cookie.
Это будет намного легче по производительности, чем httpmodule.

...