我无法找到有关此的任何信息,这让我觉得我做错了什么。我制作了一个 ashx,它为我们的登录用户提供安全图像。问题是 Sql Profiler 跟踪显示在我们的会话状态数据库中为通过此机制提供的每个图像调用了 TempResetTimeout。构建这个 ashx 是为了替换一个曾经做同样事情但由于许多图像和网络花园的使用导致许多会话状态数据库死锁的 aspx,yada,yada。这绝对是一种改进,因为对会话状态数据库的“已提交读”调用减少了,但有更新的事实意味着我们仍然会遇到一些死锁。基本上,我们完全不希望使用这个 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 完全不触摸会话?