Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 访问/写入事件日志时出现问题_C#_Asp.net_Exception_Event Log - Fatal编程技术网

C# 访问/写入事件日志时出现问题

C# 访问/写入事件日志时出现问题,c#,asp.net,exception,event-log,C#,Asp.net,Exception,Event Log,我正在使用一些旧代码(坦率地说,我不知道它的一半功能)试图将其转移到IIS7 我看到的一个问题是,我遇到了以下错误: [SecurityException:未找到源,但无法搜索部分或所有事件日志。无法访问的日志:安全性。] 如果我手动转到HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Security,并设置该密钥的(安全)权限以允许“所有人”拥有完全访问权限,则不会出现问题。但显然这不是最佳解决方案 有谁知道删

我正在使用一些旧代码(坦率地说,我不知道它的一半功能)试图将其转移到IIS7

我看到的一个问题是,我遇到了以下错误:

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

如果我手动转到HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Security,并设置该密钥的(安全)权限以允许“所有人”拥有完全访问权限,则不会出现问题。但显然这不是最佳解决方案


有谁知道删除此异常的更好方法吗?

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

从那一刻起,您应该能够以该源名称登录。(至少我观察到了这一点。)这只是创建了一个在ASP.NET下无法实现的未知源,登录到现有源应该不会有问题

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

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

从线程:

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


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

两个问题:1)我在向所有人授予访问权限时没有看到日志消息。真奇怪。2) 如何从安装程序注册事件日志源(或自定义vb脚本)?如Rob Elliott所说的
EventLog.CreateEventSource()
。这可能是ASP.NET在开始记录日志之前自己正在做的事情。我尝试制作一个vbscript来执行此操作:Imports System Imports System.Diagnostics EventLog.CreateEventSource“AppSource”,“Application”但是我遇到一个错误,它是这样说的:类型不匹配:“导入”这到底意味着什么?^上面的代码有换行符,但其中的格式在创建安装程序时被破坏了:按照MSDN创建服务+安装程序+安装程序。将EventLogInstaller添加到安装程序设计器界面(您需要使用“选择项…”将其显式添加到工具箱),然后删除ServiceInstaller和ServiceProcessInstaller(您不需要安装服务,对吗?)。只需从受信任的环境调用
EventLog.CreateEventSource()
就简单多了。