asp.net - 为什么 HttpContext.Current.Session 在 HttpModule 中可用,而在 Response.Filter 中不可用?

标签 asp.net iis httpmodule

我已经编写了一个 HttpModule,它添加了一个响应过滤器。过滤器正在捕获页面输出并将其存储在 session 变量中。

  • 我可以在我的 HttpModule 中访问 HttpContext.Current.Session。
  • HttpModule 正在处理 PostAcquireRequestState 事件。
  • 我仍然可以在 PostAcquireRequestState 事件中访问 HttpContext.Current.Session。
  • 在 PostAcquireRequestState 事件中,我添加了一个从 Stream 继承到 Response.Filter
  • 的自定义流。
  • 从 Stream.Write 方法访问时,HttpContext.Current.Session 为 null。

  • 使用 InProc SessionState 时一切正常。但是,我现在必须使用 StateServer。使用 StateServer,代码现在已损坏。

    有任何想法吗?

    最佳答案

    您是否尝试过将 session 对象从 HttpModule 传递给过滤器构造函数并以这种方式保存引用?

    通常我永远不会依赖在我的过滤器中访问 HttpContext.Current,而是通过构造函数传递必要的值或在将其分配给 Response.Filter 之前设置一些属性。它解耦事物并使其更易于维护。

    关于asp.net - 为什么 HttpContext.Current.Session 在 HttpModule 中可用,而在 Response.Filter 中不可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2556501/

    相关文章:

    php - 在 IIS 7.5 中增加 php max_execution_time

    php - 通过 ngrok 隧道剥离样式和主题的 wordpress 站点

    asp.net - IIS 7如何保留网站子文件夹身份验证设置

    c# - 粘性页脚确实与需要滚动的页面上的文本重叠

    c# - 在 mysql 和 gridview 中按年份和日期排序

    angular - 在生产模式下构建 Angular 应用程序时出错

    ASP.NET:HttpModule 性能

    .net - FormsAuthenticationModule 是否检测是否……?

    c# - 类型为 'txtUserName' 的控件 'TextBox' 必须放置在带有 runat=server 的表单标记内

    javascript - 标题的固定高度和变化宽度(HTML 表格)