Application_Error()
グローバル アプリケーション ファイル ( ) 内で例外がスローされて処理されると、HttpHandler で問題が発生しますglobal.asax
。exception.Message
アプリケーションの EventLog ソースに を書き込もうとしています。
質問する前に明確にするために、はい、EventLog ソースが存在します。私が抱えている問題は、例外自体がアプリケーションの EventLog Source に書き込まれず (この例では、イベント ログ ソースの名前は としますHttpEndpoint
)、代わりに ASP.NET 4.0 にログを記録することです。 30319.0 イベント ログ ソース。
global.asax のApplication_Error()
メソッドを廃止せずに、このエラーがスローされる前に実行されるメソッドをラップし、その方法でtry{}catch{}
アプリケーションのイベント ログ ソースに書き込むことなく、これを回避する方法はありますか?
のコードApplication_Error()
は非常に単純です。
protected void Application_Error( object sender, EventArgs e )
{
var exception = Server.GetLastError();
if ( exception == null )
{
return;
}
// try casting exception to known types for more specific event log entries
var msmqOutputQueueWriteFailedException = exception as OutputMessageQueueWriteFailedException;
if ( msmqOutputQueueWriteFailedException != null )
{
_windowsEventLog.LogFatal( _eventLogSource, string.Format( CultureInfo.CurrentCulture, "MSMQ Message Send Failure: {0} - InnerException Message: {1}", msmqOutputQueueWriteFailedException.Message, msmqOutputQueueWriteFailedException.InnerException.Message ) );
}
_windowsEventLog.LogError( _eventLogSource, String.Format( CultureInfo.CurrentCulture, "Global Exception was thrown: {0}", exception.Message ), exception );
}
のイベント ログ ソースはWeb.Config ファイル内にHttpEndpoint
として保持され、 のメンバーに割り当てられます。また、アプリケーション内で同じイベント ログ ソース (外部) に他のログを記録しましたが、すべて正常に動作します。<AppSetting>
_eventLogSource
global.asax
global.asax
何か案は?ヘルプ/フィードバックは大歓迎です。