我需要更改啥以允许我的 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?的主要内容,如果未能解决你的问题,请参考以下文章

IIS7下由于权限不足,导致没法读取配置文件,引发的错误

允许 ASP.NET Core API 应用程序的写入权限

为啥我的 IIS7 应用程序池在从 ASP.NET 页面调用的 DLL 中出现异常后关闭?

ASP.NET 输出缓存在 IIS7.5 上不起作用

我可以更改啥以使此代码正常工作?

如何将 ASP.NET 2.0 注册到 Web 服务器(IIS7)?