私は SQL Server 2008 で ASP.NET アプリケーションに取り組んでいます。さまざまな理由でユーザーがサイトでエラーを生成することがあります。エラーを生成した元の要求を取得して、それを再生または作成できると非常に便利です。テストの一部。
イベント ビューアーでエラーを検索することはよく知っていますが、要約では「使用しようとした特殊文字は何ですか?」などの十分な情報が得られないことがわかりました。
これは可能ですか?どうすればわかりますか?
私は SQL Server 2008 で ASP.NET アプリケーションに取り組んでいます。さまざまな理由でユーザーがサイトでエラーを生成することがあります。エラーを生成した元の要求を取得して、それを再生または作成できると非常に便利です。テストの一部。
イベント ビューアーでエラーを検索することはよく知っていますが、要約では「使用しようとした特殊文字は何ですか?」などの十分な情報が得られないことがわかりました。
これは可能ですか?どうすればわかりますか?
Elmah エラー ログを使用できます。無料でエラーをうまく処理でき、多くの有用な情報が表示されます。エラーが発生したときにメールを送信するように設定できます。
私の知る限り、これを行うデフォルトの方法はありません。この情報を取得してデータベースに保存したり、電子メールで管理者に送信したりできるようにするには、アプリケーションに追加のログを追加する必要があります。
Global.asax の Application_Error メソッドを変更してみてください
ここでいくつかの情報を収集する方法を示します。これをさらに変更して、ニーズに合わせることができます
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
// At this point we have information about the error
HttpContext ctx = HttpContext.Current;
Exception exception = ctx.Server.GetLastError();
//Error message that will be emailed
string errorInfo =
"<br><b>Time:</b> " + DateTime.Now.ToString() +
"<br><b>Offending URL:</b> " + ctx.Request.Url.ToString() +
"<br><b>Referring URL:</b> " + ctx.Request.UrlReferrer.ToString() +
"<br><br><b>Query String:</b> " + ctx.Request.QueryString.ToString() +
"<br><br><b>IP Address:</b> " + ctx.Request.UserHostAddress +
"<br><br><b>Form:</b> " + ctx.Request.Form.ToString() +
"<br><br><b>Source:</b> " + exception.Source +
"<br><br><b>Message:</b> " + exception.Message +
"<br><br><b>Stack trace:</b> " + exception.StackTrace;
}