当前位置:  开发笔记 > 后端 > 正文

在Windows Server 2008 IIS7上写入ASP.NET中的事件日志

如何解决《在WindowsServer2008IIS7上写入ASP.NET中的事件日志》经验,为你挑选了3个好方法。

我正在尝试使用log4net写入Windows Server 2008 SP1上IIS7下的客户事件日志.但是,帐户似乎无权写入事件日志.有没有人有什么建议?



1> JMarsch..:

问题可能是您的事件来源.您必须先创建一个事件源,然后才能写入事件日志(如果不这样做,事件日志对象会在您第一次写入日志时"自动"为您创建一个事件源).

您必须具有高级权限才能创建事件日志源.在我的一些网络应用程序中,我已将代码创建到我的设置中的事件源(安装程序以管理员身份运行,因此我始终保证能够创建源代码).

您只需创建一次源.之后,您的ASP.Net应用程序应具有足够的权限来写入指定您创建的源(或源)的条目.

您可以在设置中使用EventLogInstaller来创建源,或者您可以编写一个小实用程序来以管理员身份调用EventLog.CreateEventSource().

我会告诉你两种方式:


// You would do this one from within an Installer class in a setup:
        private void InstallEventLog()
        {
            EventLogInstaller logInstaller;

            //Create an instance of an EventLogInstaller.
            logInstaller = new EventLogInstaller();

            //Set the source name of the event log.
            logInstaller.Source = "TheEventSourceName";
            Installers.Add(logInstaller);
        }


方法2:只需以管理员身份调用一次CreateEventSource(例如,您可以将以下代码放入控制台应用程序中,并以管理员身份运行控制台应用程序


EventLog.CreateEventSource("TheSourceName", "Application");

奖励:如果您的服务器上安装了Powershell,则可以从Powershell命令提示符处执行此操作:(确保以管理员身份运行Powershell)


[system.Diagnostics.EventLog]::CreateEventSource("SourceName", "Application")

跳帮助


+1,我做了powershell方式.那很棒.

2> Michael Knis..:

授予事件日志ASPNET权限.

运行 - > regedit - >浏览到

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Services
            \Eventlog

右键单击选择权限并为ASPNET帐户提供完全控制权


不知道为什么这么多被投票.它可能无法扩展甚至不适合生产,但它是一个很好的答案,具体说明了许可是什么,以及如何给予它.
如果您要分发您的应用程序,那可能是一个坏主意,有些IT管理员不允许更改默认安全选项.你应该能够在沙箱中玩耍.
+1因为答案实际上是有用的,并且不值得在-2 ...

3> thedrs..:

IIS 8权限解决答案

我很懒,并没有在我的代码中创建一个特殊的日志,而是使用了:

System.Diagnostics.EventLog.WriteEntry("MyAppName","Bla Bla SQL ERROR:"+ sx.Message);

只是为了完成Michael的回答在IIS8中,IIS在运行服务器端代码时使用的用户是:IIS_IUSRS

(实际上它更复杂,因为IIS_IUSRS中有虚拟帐户,但是他们从该帐户获得权限,请参阅IIS8中的IIS_IUSRS和IUSR权限表单更多详细信息)

该用户仅需要此注册表节点上的READ权限:

HKLM\CURRENTCONTROLSET\SYSTEM \服务\事件日志\安全

原因是当写入新的日志源时,在创建它之前,系统要检查它是否不存在,因此需要读取源名称.

此外,如果您使用的是visual studio的iis express,它将在您的个人凭据下运行,因此如果您没有上述注册表节点的读访问权限,则在Visual Studio下进行调试时也需要添加它.

(如果管理员拥有该节点的权限,并且您在该组中,那还不够,您需要以管理员身份运行visual studio - 这只能从visual studio快捷方式而不是sln快捷方式工作)

另一个注意事项:如果计算机位于域中,并且在编辑注册表权限时找不到IIS_IUSRS帐户,则可能是您查找了错误的"位置",在域活动目录而不是本地目录中搜索该帐户电脑)

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有