【发布时间】:2015-07-14 18:46:11
【问题描述】:
我正在尝试在用户退出 Sitefinity 页面后清除 HttpContext.Current.Session。
我在link 中看到您可以检查 Request.Url,但我不确定实现是什么。
这是我目前的尝试:
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
if (((System.Web.HttpApplication)(sender)).Request.Url.ToString() == HttpContext.Current.Server.MapPath("~/Sitefinity/Login/DoLogout"))
{
if (HttpContext.Current.Session["Cart"] != null) HttpContext.Current.Session.Remove("Cart");
HttpContext.Current.Session["Cart"] = new List<IQuoteResult>();
}
}
如果您有任何提示或建议,或者我的逻辑完全错误,请告诉我。
提前致谢。
更新:
protected void Application_PostAcquireRequestState(object sender, EventArgs e)
{
if (((HttpApplication)(sender)).Request.Url.ToString().Contains("sign_out=true"))
{
if (HttpContext.Current.Session["Cart"] != null)
{
HttpContext.Current.Session.Remove("Cart");
HttpContext.Current.Session["Cart"] = new List<IQuoteResult>();
}
}
}
这是我完成相同任务的下一次尝试,但我不断收到 NullReferenceException...
注意:我也在 Application_AcquireRequestState 方法中尝试过这种方法。
这是堆栈:
[NullReferenceException: Object reference not set to an instance of an object.]
SitefinityWebApp.Global1.Application_PostAcquireRequestState(Object sender, EventArgs e) +137
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +91
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +164
【问题讨论】:
标签: session global-asax sitefinity