Вопрос

У меня есть класс, который реализует IHttpModule в отдельной сборке с веб-сайта.Реализация модуля перехватывает запросы и перезаписывает URL-адреса веб-сайта.

Сопоставления хранятся в классе с запрошенным URL-адресом и URL-адресом назначения.

Второй пример, MTSingleton, от http://devhood.com/Tutorials/tutorial_details.aspx?tutorial_id=486 подходит для создания списка сопоставлений?Есть ли лучший подход внутри реализации модуля?

Редактировать:Плохо, это для IIS 6.0 и .NET 3.5 SP1.

Это было полезно?

Решение

Похоже, вы хотите создать объект сопоставлений один раз в цикле приложения.Похоже, вы пытаетесь предотвратить создание этого снова и снова для каждого запроса.(Поясните, пожалуйста, если я ошибаюсь.)

Посмотрите методы на IHttpМодуль.Предполагая, что вы работаете с IIS 7.0, жизненный цикл ASP.Net покажет, что метод Init() запускается один раз.Это означает, что он запускается один раз за жизненный цикл приложения.Итак, запустите веб-сервер, первый запрос запустит Init(), затем последующим запросам не нужно будет запускать его, пока цикл приложения веб-сервера не обновится.

У вас должна быть возможность безопасно переместить код создания сопоставлений в метод Init(), который должен предоставить вам необходимые гарантии с помощью многопоточного одноэлементного типа инициализации.У вас по-прежнему должна быть многопоточная защита вашего объекта сопоставления, но метод Init() IHttpModule должен дать вам эффект «один раз и готово», который вы ищете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top