在我的程序中,我试图在 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/