session - 如何防止 ashx 重置 session 超时?

标签 session httphandler ashx

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

我当然没有实现 IRequiresSessionState 接口(interface),所以我相信我的 ashx 不应该以任何方式接触 Session。然而,我看到 Global.asax 每次出现都会命中,并且 Global.asax 在其某些代码中引用了 session 。这导致我尝试通过 web.config 中的以下内容从任何类型的身份验证中排除此特定页面...

<location path="ImageHandler.ashx">
<system.web>
    <authentication mode="None" />
</system.web>
</location>

...但这会导致 ashx 根本不触发(没有显示图像,并且 ProcessRequest 中没有断点命中)。我不确定为什么会发生这种情况。

如何让 ashx ImageHandler 完全不接触 session ?

最佳答案

SessionState 是在应用程序级别设置的,因此禁用任何 ASP.NET 请求的 session 的唯一方法是将其放入 IIS 中自己的应用程序中,并且关闭 session 状态。

<system.web>
    <sessionState mode="Off" />
</system.web>

http://msdn.microsoft.com/en-us/library/h6bb9cz9.aspx

您还可以创建自己的 session 状态模块(也许尝试包装现有的 session 状态模块),但这也需要 IIS 配置将另一个文件夹设置为应用程序,或者在根应用程序上替换它。

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.sessionstatemodule.aspx

尽管这看起来比仅仅为 IIS 中配置为应用程序的一个子文件夹关闭它要花费更多的精力。

关于session - 如何防止 ashx 重置 session 超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1348463/

相关文章:

php - 启动 session 获取 session id并将其写入数据库

php - 在 SQL WHERE 语句中使用 session 变量

php - 我可以在 foreach 循环中使用多个数组吗?

azure - HTTP HEAD 响应中的 "303 See other"

asp.net - ASP.NET 中的 HttpHandler 是什么

c#:使用 Handler(.ashx) 使用 javascript 获取帖子发送

java - 在 Spring 应用程序中维护状态?

c# - 从 MVC 路由处理程序返回 404

c# - 如何在 ashx 文件上运行自定义 System.Attribute

asp.net - 如何在 .ashx 处理程序上使用输出缓存