【问题标题】:Problem in accessing/writing to EventLog访问/写入 EventLog 时出现问题
【发布时间】:2010-11-18 17:09:55
【问题描述】:

我正在处理一些旧代码(坦率地说,我不知道它的一半功能)试图将其移至 IIS7。

我看到的一个问题是我收到了这个错误:

[SecurityException: 未找到源,但无法搜索部分或全部事件日志。无法访问的日志:安全性。]

如果我手动转到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Security 并设置该密钥的(安全)权限以让“每个人”都具有完全访问权限,这将没有问题。但这显然不是最佳解决方案。

有人知道消除此异常的更好方法吗?

【问题讨论】:

    标签: c# asp.net exception event-log


    【解决方案1】:

    来自this线程:

    EventLog.CreateEventSource() 方法 尝试在下搜索事件源 所有事件日志,而不仅仅是事件日志 您要为其创建 资源。有两种解决方案 这。第一个,最简单,最 不安全,只是给读/写 访问所有事件日志 ASP.NET 帐户。

    还提供了代码和其他解决方案。

    【讨论】:

      【解决方案2】:

      解决此问题的一种方法是在完全信任的情况下运行一个简单的控制台应用程序,该应用程序在有问题的源名称下写入单个 EventLog 条目。您必须为每台服务器执行此操作一次

      从那一刻起,您应该可以使用该来源名称登录。 (至少这是我的观察。)它只是创建一个在 ASP.NET 下无法做到的未知源,登录到现有源应该不是问题。

      问题是:你知道源名称吗?如果您不这样做,暂时授予所有人访问权限,等待日志消息,然后删除所有人应该也可以工作。

      微软官方的方法是创建一个注册事件日志源的安装程序。

      【讨论】:

      • 两个问题:1) 在授予所有人访问权限时,我没有看到日志消息。这很奇怪。 2) 如何从安装程序(或自定义 vb 脚本)注册事件日志源?
      • 就像 Rob Elliott 所说的 EventLog.CreateEventSource()。这可能是 ASP.NET 在开始记录之前就已经在做的事情了。
      • 我尝试制作一个执行此操作的 vbscript:Imports System Imports System.Diagnostics EventLog.CreateEventSource "AppSource", "Application" 但我收到一条错误消息:Type mismatch: 'Imports' What in the world这是什么意思?
      • ^ 上面的代码有换行符,但是这里的格式被破坏了
      • 关于创建安装程序:按照 MSDN 创建服务+安装程序+设置。将 EventLogInstaller 添加到您的安装程序设计器界面(您需要使用“选择项目...”将其显式添加到您的工具箱中)并删除 ServiceInstaller 和 ServiceProcessInstaller(您不需要安装服务,对吗?)。只需从受信任的环境中调用 EventLog.CreateEventSource() 就更简单了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 2016-08-22
      相关资源
      最近更新 更多