私のグローバルには、エラーが発生したときに処理する次のコードがあります
//[..] code goes here
Server.Transfer("~/Error.aspx?ErrorID=" + errorId);
URLを変更したことを除いて、Response.Redirect
以前は完全に機能していました(これが私が使用したい理由ですServer.Transfer
)
残念ながら、エラー ページをロードしようとすると、Masterpage を参照しようとするとクラッシュします。Session
HttpException:
セッション状態は、構成ファイルまたは Page ディレクティブで enableSessionState が true に設定されている場合にのみ使用できます。System.Web.SessionStateModule またはカスタム セッション状態モジュールがアプリケーション構成の \\ セクションに含まれていることも確認してください。
設定とページの両方に enableSessionState があります。
Context.RewritePath の使用を提案するリンクもいくつか見つけました。これにより、空白のページが読み込まれます。
UsingResponse.Redirect
は完全に期待どおりに機能するため、Server.Transfer
ここで問題があると思います。それは何ですか?
編集コード:
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)
{
}
}