インスタンスへの書き込みを含むいくつかのビジネス ロジックで作成したライブラリがありSystem.Diagnostics.EventLog
ます。ライブラリは通常、Windows サービス アプリケーションから呼び出されますが、今回は同じライブラリ関数を ASP.NET MVC アプリケーションから呼び出そうとしています。
ログに書き込む必要があるメソッドに渡す EventLog インスタンスを作成するために、コントローラー内でこのコードを試しました。
Dim log = New EventLog("Application", My.Computer.Name, "MyMVCApp")
ライブラリ メソッド内のコードがログに書き込もうとすると、次のエラーが生成されます。
[SecurityException: Requested registry access is not allowed.]
System.ThrowHelper.ThrowSecurityException(ExceptionResource resource) +51
Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable) +7462217
System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) +366
System.Diagnostics.EventLog.VerifyAndCreateSource(String sourceName, String currentMachineName) +194
System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData) +205
System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type) +14
私の Web アプリケーションは、IIS 6 を実行している Windows Server 2003 で Network Service ユーザーとして実行されています。Network Service ユーザーにレジストリへのアクセス権を付与するために何かする必要がありますか?
ASP.NET MVC アプリケーションで使用する EventLog インスタンスを作成するより良い方法はありますか? 参照する必要があるフレームワークによって既に作成されているものはありますか?