Мне нужно, чтобы какой-то объект зависал между двумя интересующими меня событиями: PreRequestHandlerExecute
(где я создаю экземпляр своего объекта и хочу сохранить его) и PostRequestHandlerExecute
(где я хочу добраться до объект). После второго события объект не нужен для моих целей и должен быть удален либо хранилищем, либо моим явным действием. Таким образом, идеальный контекст, в котором мой объект должен храниться, - на запрос (с гарантированным отсутствием проблем совместного использования, когда разные потоки обслуживают запросы ... или процессы / серверы :))
Примите во внимание, что фактическая реализация, которую я могу сделать, сделана из HttpModule и должна быть подключаемым решением для уже написанных веб-приложений (поэтому опция для предоставления некоторого состояния с использованием статических переменных / переменных экземпляра в Global.asax не делает ' Не очень хорошо - мне придется изменить Global.asax на каждом веб-приложении.
Кеш, кажется, слишком широк для этого использования. Я пытался понять, подходит ли httpContext.Application
(типа HttpApplicationState
) для меня или нет, но не могу определить, является ли он точно для HttpApplication
экземпляра или нет (AFAIK, вы можете использовать несколько экземпляров HttpApplication
s на разные потоки и, следовательно, обслуживают несколько запросов одновременно - тогда использование хранилища, совместно используемого потоками, не будет работать правильно, иначе я бы использовал его, потому что один экземпляр HttpApplication
обслуживает ровно один запрос за раз). Что-то можно сделать с сохранением состояния в экземплярах HttpModule, если я точно знаю, что он точно привязан 1-к-1 при каждом запущенном экземпляре HttpApplication
(но опять же мне нужно доказательство того, что экземпляр HttpApplication
равен 1-к-1 с моим экземпляром HttpModule). Любые ценные и уважаемые ссылки на эти темы очень ценятся ...
Было бы замечательно найти что-то особенно подходящее для ситуации с запросом (потому что в противном случае я мог бы получить что-то сверхъестественное ... возможно, какое-то "более широкое" хранилище с областями действия и некоторые хаки, чтобы иметь разные ключи в хранилище для разных запрашивает, ИЛИ, используя локальную вещь потока, и таким образом придерживается теории, что IIS / ASP.NET никогда не будет обслуживать первое событие из одного потока и второе событие из другого потока и т. д.)