edI拥有C#ASP.NET 4.5 Webform应用程序并使用以下代码:
if (!EventLog.SourceExists(sSource)) EventLog.CreateEventSource(sSource, sLog);
EventLog.WriteEntry(sSource, message, level);
由于我创建了第一行失败 注册表中的HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ eventlog \ Application \ IDDISLOG
我在WriteEntry方法上得到以下异常:
Cannot open log for source 'IDDISLOG'. You may not have write access.
搜索了其他类似的问题,但没有一个对我有效。
这是我到目前为止所做的:
添加"网络服务"到项目文件夹
添加Network service
并授予其完全访问权限。
HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \服务\事件日志
添加了Nertwork服务,并为其提供了完全访问权限。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Security
检查并看到w3wp.exe * 32进程使用用户名ASP.Net v4.0运行。
所以将ASP.Net v4.0添加到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog
仍然存在错误
答案 0 :(得分:0)
您的用户帐户可能没有足够的权限来创建事件源,只有管理员帐户才能这样做。如果您可以以管理员身份登录,请再次运行代码或在此处添加文件夹:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ eventlog \ Application \ IDDISLOG
这应该允许您的应用程序使用该源写入事件日志。您可能需要进一步配置实际的注册表项以满足您的需要。
答案 1 :(得分:0)
在IIS(Windows服务器)中,应该更改应用程序池使用的身份,因此新身份具有写入事件日志的权限。 选择应用程序池和高级设置。然后编辑并插入自定义帐户,althoug本地系统就足够了。如果您使用自定义帐户,请确保不要使用密码将要过期的用户,因为在发生这种情况时,登录事件日志将失败。