Session.Abandon Not Firing或Throwing错误消息

时间:2015-05-29 14:36:06

标签: c# asp.net session

我有以下代码抛出了我需要在web.config上启用Session的错误消息,但是到目前为止我找不到任何东西,所以有人能告诉我它是如何工作的?

我试过将代码放在PageLoad的Decline中,但是服务器似乎避开了Session的指令:

    public partial class Decline : DataPage
    {
        protected Decline() {
            Session.RemoveAll();
            Session.Clear();
            Session.Abandon();
            Response.Cookies.Remove("Accessed");
        }

       protected void Page_Load(object sender, EventArgs e)
       {  
           Response.Redirect("~/Account/Login.aspx");
       }
    }

这是完整的信息:

  

只有在配置文件或Page指令中将enableSessionState设置为true时,才能使用会话状态。还请确保System.Web.SessionStateModule或自定义会话状态模块包含在应用程序配置的<configuration>\<system.web>\<httpModules>部分中

这是运行.net 4框架,来自以下答案的配置不太适合我当前的项目。因为那是提供.net mvc 2解决方案。因此,在.net 4

上有相同的功能会有所帮助
<system.webServer>
   <modules runAllManagedModulesForAllRequests="true">
    <remove name="Session" />
    <add name="Session" type="System.Web.SessionState.SessionStateModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </modules>
</system.webServer>

Session state can only be used when enableSessionState is set to true either in a configuration

此外,我已经为我的页面提供了以下行

<%@ Page Title="" Language="C#" CodeFile="Decline.aspx.cs" Inherits="Decline" enableSessionState="true" %> 

如果存在与否则完全没有任何区别。也在IIS 7.5上运行

1 个答案:

答案 0 :(得分:0)

我有同样的问题,这就是我所做的 在web.Config中添加此

  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

并在您正在使用的页面中

EnableSessionState="True"

您可以尝试删除一个会话并检查它是否已被删除

Session.Remove("test");
if (Session["test"] == null)
{
//woooo it work ;
}
else
{
// what ????
}