ASP .NETアプリケーションからアプリケーションイベントログにログします。 EventLog.SourceExistsを呼び出して、イベントソースが最初に存在するかどうかを判断し、イベントソースが作成されていないかどうかを確認します。 MSDN(http://msdn.microsoft.com/en-us/library/6s7642se.aspx)に文書化されたようEventLog.SourceExistsを呼び出す前にEventLogのアクセス許可を検出します。
: 「Windows Vistaのイベントソース以降またはWindows Server 2003を検索するには、あなた この要件を満たすのは、イベントソースが一意であるかどうかを判断するために、セキュリティを含むすべてのイベントログを検索する必要があるためです.Windows Vista以降、ユーザーはセキュリティログにアクセスする権限がないため、 "
私の場合のNetworkServiceユーザーには管理者権限がないため、EventLog.SourceExistsはMSDNに記載されているようにSecurityExceptionをスローします。
私の質問はです。どうすればEventLog.SourceExistsの呼び出しを防御的にコーディングできますか? EventLog.SourceExistsを呼び出す前にイベントソースを検索する権限があるかどうかを最初に確認するための呼び出しがありますか?
また、SecurityExceptionをキャッチしてキャッチブロック内で他の処理を行う唯一の方法です。既存のイベントソースにログインする。情報
ケビン
いいえイベントログを使用する必要はありません。私の会社はロギングライブラリを公開しています。アプリケーション開発中にアプリケーションがこのライブラリを使用してテスト用にイベントログを使用することができれば、この時点でログDB設定がない可能性があると仮定します。プロダクションでは、アプリケーションは決してイベントログを使用すべきではなく、常にDBにログするべきです。ただし、アプリケーションの中には、開発中にテストサーバーにコードを展開したり、ローカルマシンと同じアクセス許可を制御しないため、イベントログへのロギングが停止するものがあります。 –
私は基本的にこれを回避するか、ロギングライブラリでカスタムイベントソースを作成しようとするのではなく、単に "情報"イベントソースにログするようにしてください。 –
あなたは大歓迎です。私の(確かに限られた)知識を共有して幸せです(投票がうまくいくでしょう)。イベントログに確実にログする必要がある場合は、カスタムイベントログを作成してログに記録することをお勧めします。メインのアプリケーションイベントログは使用しないでください。しかし、あなたが言っているように、テストサーバーにデプロイすると、セキュリティはアプリケーションのログを止めるので、私は他のソリューション(上記で説明した)を探索します。 – markp3rry