会话状态只能在enableSessionState设置为true时使用,当我使用Server.Transfer时

时间:2012-04-26 04:39:33

标签: asp.net session exception exception-handling session-state

包含错误页面的网站中的每个页面都是从主页面派生的。在母版页中,我正在访问会话变量。当我得到Exception时,处理Page_Error或Application_Error事件。从那里我使用Server.Transfer重定向到错误页面,然后我在Error.aspx的母版页中得到以下异常。如果我使用Response.Redirect它可以正常工作。

Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive. Please also make sure that System.Web.SessionStateModule or a custom session state module is included in the <configuration>\<system.web>\<httpModules> section in the application configuration.

请详细说明Server.Transfer的问题。

1 个答案:

答案 0 :(得分:0)

当应用程序抛出异常时,我在Application_Error事件中处理。

protected void Application_Error(object sender, EventArgs e)
    {
        Exception ex = HttpContext.Current.Server.GetLastError();
        if (ex.Message == "File does not exist." && HttpContext.Current.Session == null)
        {
            if (((System.Web.HttpException)(ex)).GetHttpCode() == 404)
            {
                LogtheException();
            }
        }
        else
        {
            Log the Exception(Session["uname"].ToString());
            Server.Transfer(UrlMaker.ToError(ex.Message.ToString()));
        }
    }

使用HttpContext.Current.Server.GetLastError();我得到了最后一个例外。如果有任何异常,“文件不存在”。有权访问会话变量。

首先它会抛出与应用程序相关的异常,然后如果任何css / image文件路径不正确,那么紧接着它会抛出“文件不存在”。例外。例外情况是因为“文件不存在”没有正确处理会话。情况下。

Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive. Please also make sure that System.Web.SessionStateModule or a custom session state module is included in the <configuration>\<system.web>\<httpModules> section in the application configuration.

现在我开始知道Css和图像请求通常不需要访问会话,因此asp不会将会话加载到内存中,并且在“文件不存在”异常时您无法访问它。 ..