我需要更改啥以允许我的 IIS7 ASP.Net 3.5 应用程序创建事件源并将事件记录到 Windows EventLog?
Posted
技术标签:
【中文标题】我需要更改啥以允许我的 IIS7 ASP.Net 3.5 应用程序创建事件源并将事件记录到 Windows EventLog?【英文标题】:What do I need to change to allow my IIS7 ASP.Net 3.5 application to create an event source and log events to Windows EventLog?我需要更改什么以允许我的 IIS7 ASP.Net 3.5 应用程序创建事件源并将事件记录到 Windows EventLog? 【发布时间】:2010-09-22 02:41:54 【问题描述】:在 IIS 7 下运行的 ASP.Net 3.5 似乎不允许开箱即用。
if (!EventLog.SourceExists("MyAppLog"))
EventLog.CreateEventSource("MyAppLog", "Application");
EventLog myLog = new EventLog();
myLog.Source = "MyAppLog";
myLog.WriteEntry("Message");
【问题讨论】:
System.Security.SecurityException when writing to Event Log的可能重复 【参考方案1】:右键单击应用程序并选择“以管理员身份运行”
【讨论】:
【参考方案2】:我从here 复制了这个答案(问题是 Log4Net,但答案仍然适用)。 technet 链接错过了一个重要步骤。
创建注册表项
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\MY-AWESOME-APP
在这个里面创建一个字符串值
将其命名为EventMessageFile
,将其值设置为
C:\Windows\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll
该路径似乎适用于 64 位和 32 位环境。
使用此技术,您无需在注册表中设置权限,并且一旦创建了上述密钥,它就可以正常工作。
或者
如果您没有大型服务器场,而只有一个小型“网络花园”,您可以在每台服务器上运行控制台应用程序,使用EventLog.CreateEventSource
创建事件日志源,请确保控制台应用程序由管理员运行。
【讨论】:
既然你提到了 log4net,这里是 eventlogappender 疑难解答的链接。 logging.apache.org/log4net/release/faq.html#trouble-EventLog 。那里有关于如何创建事件源的官方 ms 链接。需要注意的是,这种方法不推荐用于生产环境。【参考方案3】:这是自 Windows 2003 以来 Windows 安全性的一部分。
您需要在注册表中的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application 下创建一个条目,确保网络服务或您模拟的帐户有权访问此注册表项。
@CheGueVerra 的链接:Requested Registry Access Is Not Allowed
【讨论】:
以上是关于我需要更改啥以允许我的 IIS7 ASP.Net 3.5 应用程序创建事件源并将事件记录到 Windows EventLog?的主要内容,如果未能解决你的问题,请参考以下文章