-1

包括错误页面在内的网站中的每个页面都是从母版页派生的。在母版页中,我正在访问会话变量。当我得到异常时,处理 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 的问题。

4

1 回答 1

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 不会将会话加载到内存中,并且在异常“文件不存在”时您无权访问它。..

于 2012-04-27T12:32:34.637 回答