gpt4 book ai didi

asp.net - 调用 Response.End() 后访问 session

转载 作者:行者123 更新时间:2023-12-02 14:03:14 25 4
gpt4 key购买 nike

我有一个自定义 http 模块,它对请求进行一些后处理。此处理在 PostRequestHandlerExecute 事件期间运行,并修改 SessionState。

我有一个第三方控件,它正在实现自己的回调机制。本质上,组件在控件的 Render 事件中将一些 XML 渲染到缓冲区,然后调用 Response.End()。

因为它调用 Response.End(),所以管道中的其他事件都不会被触发。我正在尝试找出一种方法来仍然让我的自定义模块运行此后处理代码。我可以 Hook EndRequest 事件,但此时 session 不再可用。

编辑具体来说,我需要做的是修改 session 状态中两个特定槽的值。一种是值类型,一种是引用类型。我也在使用进程内 session 状态有什么想法或建议吗?

最佳答案

尽管Response.End(建议改用HttpApplication.CompleteRequest)使应用程序事件短路, session 状态模块仍将在结束请求时保留 session 状态。每当 session 状态模块保留 session 状态时,它就会从上下文中删除 session 包。

因此,实现此目的的一种黑客方法可能是在模块中添加标志。如果 PostRequestHandlerExecute 被触发,则设置该标志。处理 EndRequest ,如果未设置标志,则进行 session 状态操作。为了获取 session 状态,请清除 web.config 中的所有模块,并将模块放在 session 状态模块之前(通过一般观察,模块按注册顺序接收应用程序事件)。

更干净的方法是让你的 own session state store provider - 这样您就可以公开方法来根据 session ID 获取 session 状态包,该 session 状态包将在您的模块中用于操作 session 槽。

关于asp.net - 调用 Response.End() 后访问 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8129979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com