Asp.Net 4.0 Web Forms
次のエラーを特定の時間にスローするアプリケーションがあります
「'/MySiteDev'アプリケーションのサーバーエラー」。
このエラーは時々発生します。そして、このエラーはApplication_Error
で処理されるイベントを発生させていませんGlobal.asax
。
これはApplication_Errorを発生させていないので、このエラーイベントのログを持つ他の可能な場所は何ですか?イベントビューア以外に利用できるものはありますか?
ASP.Netフレームワークによって処理される例外を見つける方法はありますか?
注:customErrors mode="Off"
。またrunAllManagedModulesForAllRequests="true"
アップデート
方法からの参照:アプリケーションレベルのエラーの処理
Global.asaxファイルで定義されているエラーハンドラーは、ASP.NETランタイムによる要求の処理中に発生したエラーのみをキャッチします。たとえば、ユーザーがアプリケーションで発生しない.aspxファイルを要求すると、エラーがキャッチされます。ただし、ユーザーが存在しない.htmファイルを要求した場合、エラーはキャッチされません。ASP.NET以外のエラーの場合は、インターネットインフォメーションサービス(IIS)でカスタムハンドラーを作成できます。カスタムハンドラーは、サーバーレベルのエラーに対しても呼び出されません。
Global.asaxファイルからリクエストのエラー情報を直接出力することはできません。制御を別のページ(通常はWebフォームページ)に移す必要があります。コントロールを別のページに転送する場合は、転送方法を使用してください。これにより、現在のコンテキストが保持されるため、GetLastErrorメソッドからエラー情報を取得できます。
エラーを処理した後、Serverオブジェクト(HttpServerUtilityクラス)のClearErrorメソッドを呼び出してエラーをクリアする必要があります。
コード
protected void Application_Error(object sender, EventArgs e)
{
//Get the exception object
Exception exception = Server.GetLastError().GetBaseException();
//Get the location of the exception
string location = Request.Url.ToString();
if (!String.IsNullOrEmpty(location))
{
string[] partsOfLocation = location.Split('/');
if (partsOfLocation != null)
{
if (partsOfLocation.Length > 0)
{
location = partsOfLocation[partsOfLocation.Length - 1];
}
}
//Maximum allowed length for location is 255
if (location.Length > 255)
{
location = location.Substring(0, 254);
}
}
string connectionString = ConfigurationManager.ConnectionStrings[UIConstants.PayrollSQLConnection].ConnectionString;
ExceptionBL exceptionBL = new ExceptionBL(connectionString);
exceptionBL.SubmitException(exception.Message, location);
Log.Logger.Error(exception.Message);
}
CONFIG
<system.web>
<compilation debug="true" targetFramework="4.0" />
<pages validateRequest="false"></pages>
<httpRuntime requestValidationMode="2.0" />
<customErrors mode="Off"/>
<authentication mode="Windows"></authentication>
<identity impersonate="true" userName="domain\xxxx" password="xxxx"/>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<httpErrors errorMode="Detailed" />
</system.webServer>
更新された参考文献