Pet*_*aud 8 asp.net session session-state
在使用它之前,我想在基页类中检查Session是否存在,但是我发现如果它不存在,它只会通过检查抛出异常:
if (Session != null)
{
Session.Remove("foo");
}
Run Code Online (Sandbox Code Playgroud)
将抛出此异常:
只有在配置文件或Page指令中将enableSessionState设置为true时,才能使用会话状态.还请确保System.Web.SessionStateModule或自定义会话状态模块包含在应用程序配置的\\部分中.
检查发生在我的所有aspx页面派生的基页类的Load事件中.该应用程序启用了会话,并且它具有httpModules节点中列出的模块.这是一个经常使用会话的应用程序,通常没有问题.
我只在某些页面上出现此错误,而且大部分时间都不可靠.我知道我应该做一些不同的事情以防止错误,但我不确定是什么?
我可能在生命周期中过早地召集会议吗?我没有正确检查会话是否可用?
Rob*_*ent 10
您可以使用这样的方法来确定当前请求是否使用会话:
public static bool RequestHasSession
{
get
{
return (HttpContext.Current.Handler is IRequiresSessionState);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不确定自己是否在Web上下文中运行,则需要事先检查HttpContext.Current是否为null.
您可以使检查更安全 - Page.Session 在 Context.Session 属性周围包装空检查。所以你应该能够检索 Context.Session 并检查它是否为空。如果是,则会话状态不可用。
但它应该在 Page_Load() 中可用,因此这指向其他地方的问题:)
| 归档时间: |
|
| 查看次数: |
10861 次 |
| 最近记录: |