У меня проблемы с поиском какой-либо информации по этому поводу, что заставляет меня думать, что я делаю что-то не так. Я сделал Ashx, который предоставляет защищенные изображения нашим вошедшим в систему пользователям. Проблема в том, что трассировка Sql Profiler показывает, что TempResetTimeout вызывается в нашей БД состояния сеанса для каждого изображения, обслуживаемого этим механизмом. Этот ashx был построен, чтобы заменить aspx, который делал то же самое, но вызывал много взаимоблокировок db состояния сеанса из-за большого количества изображений и использования веб-сада, yada, yada. Это, безусловно, улучшение, благодаря одному менее «Read Committed» вызову состояния сеанса db, но тот факт, что есть обновление, означает, что у нас все еще могут быть некоторые взаимоблокировки. По сути, мы не хотим никакого сеансового взаимодействия вообще от использования этого Ashx, но этого, похоже, не происходит.
У меня определенно нет реализованного интерфейса IRequiresSessionState, поэтому я уверен, что мой ashx не должен касаться Session. Однако я вижу, что Global.asax срабатывает для каждого случая, и Global.asax ссылается на сессию в некоторых его кодах. Это заставило меня попытаться исключить эту конкретную страницу из любого вида аутентификации с помощью следующего в web.config ...
<location path="ImageHandler.ashx">
<system.web>
<authentication mode="None" />
</system.web>
</location>
... но это приводит к тому, что ashx вообще не срабатывает (изображение не отображается и не достигается точка останова в ProcessRequest). Я не уверен, почему это происходит.
Как я могу заставить свой ashx ImageHandler вообще не трогать сессию?