34

在 IIS 7 下运行的 ASP.Net 3.5 似乎不允许开箱即用。

        if (!EventLog.SourceExists("MyAppLog"))
            EventLog.CreateEventSource("MyAppLog", "Application");

        EventLog myLog = new EventLog();
        myLog.Source = "MyAppLog";
        myLog.WriteEntry("Message");
4

3 回答 3

37

我从这里复制了这个答案(问题是 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,确保控制台应用程序由管理员运行。

于 2011-10-21T10:53:52.813 回答
25

这是自 Windows 2003 以来 Windows 安全性的一部分。

您需要在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application 下的注册表中创建一个条目,确保网络服务或您模拟的帐户有权访问此注册表项。

@CheGueVerra 的链接:不允许请求的注册表访问

于 2008-11-13T02:26:56.867 回答
5

右键单击应用程序并选择“以管理员身份运行”

于 2016-01-21T07:52:12.467 回答