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