イベントログに EventLogWebEventProvider のエラーが記録される現象について (3)


こんにちは d99 です。
前々回前回に引き続き、以下のエラーについて取りあげます。

イベントの種類: エラー
イベントソース: ASP.NET 2.0.50727.0
イベントカテゴリ: Web イベント
イベント ID: 1301
System.Web.HttpException: EventLogWebEventProvider プロバイダでは、エラー コード 0x80070057 でイベントをログに記録できませんでした。

前々回はこのエラーは「エラーを記録するのに失敗したエラー」だと書きました。そして前回は本来のエラーは何か、その影響は何が考えられるかを書きました。今回はこのエラーを記録しないようにする、という対処方法に関するお話です。

前々回、以下のように書きました。

ASP.NET 2.0 では、Web アプリケーションで未処理の例外が発生した際に、アプリケーションイベントログにイベントソースを ASP.NET <バージョン番号> としてその例外の詳細を記録するという機能が搭載されており、ヘルスモニタリング機能と呼ばれています。ヘルスモニタリング機能については以前下記で紹介させて頂きました。

ASP.NET 障害解析 最初の一歩
http://technet.microsoft.com/ja-jp/ee862421.aspx

上記のエラーは、このヘルスモニタリング機能が、アプリケーションで発生したエラーをイベントログ記録しようとしたのですが、それに失敗した、という事を示しています。従ってイベントログに記録されているのは、本来のエラーではありません。

従って、このエラーを消すには、2つの方法があります。

  1. エラーをハンドリングする
  2. ヘルスモニタリング機能を無効にする

1. は globa.asax の Application_Error イベントなどでエラーを処理する事を示します。処理してしまえば、未処理例外として記録される事はありません。

2. は未処理例外を記録しているヘルスモニタリング機能自体を無効にする事になりますが、この機能を完全に無効にするのではなく、ViewState の検証エラーだけ記録を無効化する事が一般的です。以下の内容を web.config の <system.web> から </system.web> 間に加えると ViewState の検証エラーのみをイベントログに出力しなくなります。

<healthMonitoring>
<rules>
<remove name=”Failure Audits Default”/>
<add name=”Auth Failure Audits Default” eventName=”Auth Failure Audits” provider=”EventLogProvider” profile=”Default” minInstances=”1″ maxLimit=”Infinite” minInterval=”00:01:00″ custom=”” />
</rules>
<eventMappings>
<add name=”Auth Failure Audits” type=”System.Web.Management.WebAuthenticationFailureAuditEvent, System.Web,Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” startEventCode=”0″ endEventCode=”2147483647″ />
</eventMappings>
</healthMonitoring>

注意点:eventMappings の add 要素、type 属性は、途中に改行を入れず一行で記述してください

healthMonitoring 要素 (ASP.NET 設定スキーマ)
http://msdn.microsoft.com/ja-jp/library/2fwh2ss9(v=VS.100).aspx

WebViewStateFailureAuditEvent クラス
http://msdn.microsoft.com/ja-jp/library/system.web.management.webviewstatefailureauditevent(v=VS.100).aspx

web.config の内容が少し複雑なのは、”Failure Audits” というイベントには、”Auth Failure Audits” と “ViewState Failure” の両方が含まれるため、”Failure Audits”  を無効にし、”Auth Failure Audits” を追加しているためです。

というわけで、3回に渡って EventLogWebEventProvider のエラーについて解説してまいりました。次回は、これまた最近お問い合わせの多い事例について取り上げたいと考えています。なかなかトラブルシューティングネタに戻れませんが、また次回も見て頂けると嬉しいです。

ではまた。
d99 でした。


Skip to main content