В моем глобальном я имею следующий код для обработки, когда возникает ошибка
//[..] code goes here
Server.Transfer("~/Error.aspx?ErrorID=" + errorId);
Раньше он был Response.Redirect
, который отлично работал, за исключением того, что он менял URL-адрес (вот почему я хочу использовать Server.Transfer
)
К сожалению, теперь, когда он пытается загрузить страницу "Ошибка", он сбой на главной странице, когда он пытается ссылаться на Session
HttpException:
Состояние сеанса может использоваться только тогда, когда для параметра enableSessionState установлено значение true, либо в файле конфигурации, либо в директиве "Страница". Пожалуйста, также убедитесь, что System.Web.SessionStateModule или пользовательское состояние сеанса модуль включен в \\ раздел конфигурации приложения.
У меня есть enableSessionState как в моей конфигурации, так и на моей странице.
Я также нашел некоторые ссылки, которые предлагают использовать Context.RewritePath - это просто приводит к загрузке пустой страницы.
Использование Response.Redirect
работает отлично и, как ожидалось, поэтому я предполагаю, что Server.Transfer
- проблема здесь. Что это?
Код EDIT:
protected void Application_Error(object sender, EventArgs e)
{
lock (_lockMe)
{
Exception ex = Server.GetLastError();
if (ex != null)
{
if (ex.InnerException != null)
ex = ex.InnerException;
ErrorLoggingManager.AddError(ex, new MembershipData(), ...); //etc
}
Server.ClearError();
//Some other database code for cleaning up some stuff when an error happens
}
try
{
if (Response != null)
{
//Get the last error logged
MyDataContext db = new MyDataContext();
int errorId = db.LoggedErrors.OrderByDescending(le => le.ErrorId).Select(le => le.ErrorId).FirstOrDefault();
Server.Transfer("~/Error.aspx?ErrorID=" + errorId);
}
}
catch (Exception)
{
}
}