包含错误页面的网站中的每个页面都是从主页面派生的。在母版页中,我正在访问会话变量。当我得到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的问题。
答案 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不会将会话加载到内存中,并且在“文件不存在”异常时您无法访问它。 ..