У меня проблемы с поиском какой-либо информации об этом, что заставляет меня думать, что я делаю что-то не так. Я сделал ashx, который предоставляет защищенные изображения нашим зарегистрированным пользователям. Проблема в том, что трассировка Sql Profiler показывает, что TempResetTimeout вызывается в нашей базе данных состояний сеанса для каждого изображения, обслуживаемого с помощью этого механизма. Этот ashx был создан для замены aspx, который раньше делал то же самое, но вызывал множество взаимоблокировок базы данных состояния сеанса из-за большого количества изображений и использования веб-сада, yada, yada. Это определенно улучшение из-за того, что на один вызов «Read Committed» для базы данных состояния сеанса меньше, но тот факт, что есть обновление, означает, что у нас все еще могут быть взаимоблокировки. По сути, мы не хотим НИКАКОГО взаимодействия с сеансом при использовании этого 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 не касаться сеанса ВООБЩЕ?