【问题标题】:Error message when writing to the Windows Event Log写入 Windows 事件日志时出现错误消息
【发布时间】:2011-03-02 02:10:16
【问题描述】:

当我运行我编写的一段代码时,我不断收到以下错误:

没有找到源,但是有一些或 无法搜索所有事件日志。 无法访问的日志:安全性。

我已经仔细检查过,我没有在任何地方手动写入日志,所以我假设我的应用程序是自己做的。

我找到了this post,这表明我授予与事件日志对应的注册表项的读/写权限。我对此有三个问题:

  1. 这是解决此问题的正确方法吗 错误?

  2. 如果我走这条路,我应该授予运行我的应用程序池的权限吗? (这是一个网络应用)

  3. 授予对该注册表项的读/写访问权限是否安全?

【问题讨论】:

  • 你能发送完整的堆栈跟踪吗?
  • 我可能遗漏了一些东西,但您似乎最好弄清楚为什么不应该写入事件日志的代码正在写入事件日志和它使用的源,如果你弄清楚为什么会这样。可能只需要设置源即可对其进行写入。
  • 我在大多数 .Net 4 程序集中使用反射器进行了快速字符串搜索,但没有找到确切的错误消息。你在什么框架上?任何特定的程序集?
  • @rene,我使用的是 3.5,这是一个 SharePoint 工作流。
  • @Andrew,在我看来它应该写入事件日志,但它根本没有所需的权限。你为什么说代码“不应该写入事件日志”?如果我的应用程序有要记录的内容,我想看看。

标签: c# .net-3.5 event-log sharepoint-workflow


【解决方案1】:

这绝对是权限问题。这与您尝试写入事件日志的源不存在有关。一旦它被创建,这个错误应该会消失。由于您只需要确保第一次添加源,您可以尝试注册表方法(授予 AppPool 用户访问权限),然后在创建源后删除注册表访问权限。

我已通过使用我编写的以管理员​​身份运行的对话框应用程序手动将源添加到事件日志来解决此问题。添加源后,所有其他事件日志记录都可以正常工作。如果您知道它在写入事件日志时尝试使用的 Source,您也可以尝试这种方法。

【讨论】:

  • 它是否可能只是认为它不存在,因为它甚至无法读取注册表项?
  • 可能,但我以前从未见过这种情况。我经常遇到这个错误,对于我的应用程序,它总是在创建源代码后消失。我可能会通过更改注册表中的安全设置来开始调试它,这样我就可以添加一个条目,然后我会恢复这些更改以查看日志记录是否仍然有效。如果您在 iis 中,那么您可能需要 iisreset 或至少在更改之间进行应用程序池回收。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多