global.asax中的Asp.net System.Web.HttpContext.Current.Session null

时间:2008-11-16 00:10:20

标签: asp.net session null global-asax

我有一个自定义安全主体对象,我在当前线程的global.asax中设置,一切都很好,通常没有问题。

但是,我只是通过让页面提供图像来添加动态图像功能,每当加载动态图像页面时,System.Web.HttpContext.Current.Session在global.asax中为null,这阻止了我从那时起将安全主体设置为正常和级联问题。

通常情况下,在用户登录的开始会话期间,global.asax中的会话只有一次,之后它始终可用于此单一异常。

当浏览器遇到原始页面中的图像标记时加载动态图像页面,即

我猜这是浏览器在没有发送一些凭据的情况下请求该页面的一些方面吗?

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:25)

约翰,

我假设您正在为处理程序使用ashx处理程序。如果是这样,请确保从IRequiresSessionState派生,例如:

public class Images : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{ }

如果您没有使用ashx,您能描述动态图像页面的含义吗?

约什

答案 1 :(得分:8)

在Global.asax.cs Session_Start()和Session_End()中

你需要使用“this.Session”!! 原因是HttpContext仅在有正在处理的请求时可用。这就是你在HttpContext.Current.Session上获得NULL的原因!

来自Microsoft网站: “HttpContext类:封装有关单个HTTP请求的所有特定于HTTP的信息。”

但是不要感觉不好......我也为这个感到沮丧! :)

答案 2 :(得分:3)

会话与登录无关。

当您想要访问会话时,您要覆盖什么事件?在AcquireRequestState被触发之前,会话才可用。

有关详细信息,请参阅:http://msdn.microsoft.com/en-us/library/9ysfzy8h.aspx

答案 3 :(得分:0)

是的你是对的这是因为对象依赖性可能会在其他页面转移并行的情况下发生冲突,这可能会破坏会话之间的防火墙