c# - session 在 IHttpModule 中不可用

标签 c# asp.net

在我的程序中,我试图在 IHttpModule 中使用 session 变量。这是我的代码。这在 VS 2010 开发服务器中运行良好。但是当我尝试在 IIS7 中调试时,它显示异常 System.Web.HttpException: Session state is not available in this context 那么为什么 session 在 IIS 7 中不可用,而在开发服务器中可用。

using System;
using System.Web;

public class Globalizer : IHttpModule
{    
  public void Init(HttpApplication context)
  {
    context.AcquireRequestState += new EventHandler(setLanguage);
  }

  public void Dispose(){}

  public void setLanguage(Object sender, EventArgs i_eventArgs)
  {
    HttpApplication http_application = sender as HttpApplication;     
    http_application.Session["language"] = "test";

  }
}

最佳答案

您只需执行 IRequiresSessionState .

所以你的代码应该是这样的:

public class Globalizer : IHttpModule, IRequiresSessionState

如果您只使用读取 session (并且从不更新它们),那么您应该使用 IReadOnlySessionState因为这最后不锁定 session 状态,因此,您不会有并发请求)。

关于c# - session 在 IHttpModule 中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21155567/

相关文章:

asp.net - 如何使用 HttpContext 重定向

asp.net - ASP.Net 应用程序有内存限制吗?

c# - 使用反射在属性集方法 .Net 中插入代码

c# - 嵌套for循环不执行

c# - 来自 List<T> 的数据拆分为另一个具有 2 个嵌套 List<T> 的 List<T>

c# - 使用 "Object Reference not set to an instance of an object"运行 Quartz 作业时出错

asp.net - Azure 使用文件共享从 IIS VM 共享照片?

c# - 由特定通用包含接口(interface)参数化的通用容器接口(interface)

C# - 正则表达式 - 根据特定的命名模式匹配文件名

c# - 'Access-Control-Allow-Origin' header 包含多个值。但是我在标题中只定义了一个值?