跨 HttpHandler 保留会话变量

发布于 2024-09-14 19:22:31 字数 310 浏览 3 评论 0原文

我有一个带有 5 个 .ashx HTTPHandler 的 ASP.NET 应用程序,它们实现 IRequiresSessionState 或 IReadOnlySessionState。

调用第一个处理程序后,我创建一个变量并将其存储在会话中。

当我调用下一个 HttpHandler 时,该变量在会话对象中不可用。

我正在使用 context.Session。

我有一个 global.asax,我在其中检索 sessionId。

有没有办法在 HttpHandler 之间保留会话变量,或者每个处理程序都有自己的会话?

I have an ASP.NET application with 5 .ashx HTTPHandlers that implement IRequiresSessionState or IReadOnlySessionState.

Upon calling the first handler I create a variable and store it in the session.

When I call the next HttpHandler the variable is not available in the session object.

I am use context.Session.

I have a global.asax where I retrieve the sessionId.

Is there a way to preserve session variables across HttpHandlers or does each Handler get its own session?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

落花浅忆 2024-09-21 19:22:31

HeartAttack 在这里对此进行了很好的讨论:

http://weblogs.asp.net/ashicmahtab/archive/2008/09/18/how-to-use-session-values-in-an-httphandler.aspx

基本上,你需要做类似的事情:

public class MyHandler:IHttpHandler,IRequiresSessionState

HTH。

这应该维护跨处理程序的会话状态。也就是说,当您登录时,您只有一个会话来处理对该域的所有请求。我建议验证您是否确实登录。缓存当然可以工作,因为这对于所有会话都是通用的,但在服务器上成本更高,因为它不容易消失。

HeartAttack has a good discussion of this here:

http://weblogs.asp.net/ashicmahtab/archive/2008/09/18/how-to-use-session-values-in-an-httphandler.aspx

Basically, you need to do something like:

public class MyHandler:IHttpHandler,IRequiresSessionState

HTH's.

This should maintain session state across handlers. That is, when you log in, you only have one session for all of your requests into that domain. I'd suggest verifying that you are really logged in. Cache of course will work because that is common to all sessions but much more expensive on the server because it does not easily go away.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文