找不到源,但无法搜索部分或全部事件日志.无法访问的日志:安全性



我收到错误:

找不到源,但无法找到部分或全部事件日志已搜索。无法访问的日志:安全

当我在Win 2K12 R2服务器IIS 8.5 上运行以下代码以捕获错误时

EventLog elog = new EventLog();
EventLog.CreateEventSource("MyApp", "Application");
EventLog.WriteEntry(Source, swError.ToString(), EventLogEntryType.Error);

我已经完全访问了HKLMSYSTEMCurrentControlSetserviceseventlog,但它仍然不起作用。我该怎么修?

请参阅创建注册表项。

出现此问题不仅可能是由于权限,还可能是由于事件源密钥未成功注册而丢失(您需要管理员权限才能执行此操作-如果您只是像往常一样打开Visual Studio并正常运行程序,这还不够)。确保您的事件源"MyApp"确实已注册,即它出现在HKEY_LOCAL_MACHINESYSTEMCurrentControlSetserviceseventlogApplication下的注册表中。

来自MSDN EventLog.CreateEventSource():

在Windows Vista及更高版本或Windows Server中创建事件源2003,您必须具有管理权限。

因此,您必须以管理员身份运行事件源注册代码(此外,请检查源之前是否已经存在-请参阅上面的MSDN示例),或者您可以手动将注册表项添加到:

  1. 创建一个regkey HKEY_LOCAL_MACHINESYSTEMCurrentControlSetserviceseventlogApplicationMyApp
  2. 在内部,创建字符串值EventMessageFile并将其值设置为例如C:WindowsMicrosoft.NETFrameworkv2.0.50727EventLogMessages.dll

运行Visual Studio时出现此错误。通过以管理员身份运行Visual Studio,应用程序能够访问安全日志,因为它当时有足够的权限(从而防止了错误)。

我知道,我参加聚会有点晚了。。。通常情况下,您只需在IIS中的应用程序池中使用默认设置。在IIS管理实用程序中,转到app pools->select pool-->advanced settings->Process Model/Identity并选择具有正确权限的用户标识。默认情况下,它设置为ApplicationPoolIdentity。如果你是开发者,你很可能是你机器上的管理员,所以你可以选择你的帐户来运行应用程序池。在部署服务器上,让管理员来处理它。

无论何时启动Visual Studio,都以管理员身份运行它。它对我有效。

尝试为AppPool ID或网络服务提供适用的访问HKLM\SYSTEM\CurrentControlSet\Services\eventlog\security。我也犯了同样的错误。。这对我很有效。看到错误还说无法访问的日志是安全日志。

我还在eventlog\application中授予了权限。

我到处都可以访问。

在本地,我使用管理员权限运行visualstudio,错误就消失了。

如果在任务调度程序中出现此错误,则必须检查以高权限运行的选项

这也可能是因为,它可能找不到所需的.dll文件。文件不在文件夹中或已重命名。我遇到了同样的问题,发现.dll文件在我的垃圾箱文件夹中丢失了一些。

在Visual Studio中调试时,使用NetworkService作为应用程序池高级设置中的标识值ApplicationPoolIdentity如果您直接从浏览器中打开网站(或转到IIS中的虚拟目录并使用右侧的"浏览"选项),则它可以工作。

我最近开始使用Visual Studio 2013在内部NLog故障日志中收到此错误。该解决方案已经使用NLog v2.0.0好几年了。在上个月内,我们的主日志停止工作。为了解决这个问题,我通过Nuget将NLog更新到了最新版本(v3.1.0)。安全异常现已消失,所有日志消息再次出现。

此外,我后来发现了另一个安全性异常,并能够通过在另一个线程中按照本文中的说明进行修复。

最新更新