我有一个库,其中包含一些业务逻辑,包括写入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应用程序在运行时使用的是Windows Server 2003上的Network Service用户,并且正在运行IIS 6。我需要做些什么才能让Network Service用户访问注册表?
有没有更好的方法来创建一个EventLog实例,以便在ASP.NET MVC应用程序中使用?框架中是否已经创建了一个实例,我只需要引用它?