我正在努力尝试将ASP.NET应用程序从Server 2003(和IIS6)移植到Server 2008(IIS7).
当我尝试访问浏览器上的页面时,我得到了这个:
'/'应用程序中的服务器错误.
安全例外
说明:应用程序尝试执行安全策略不允许的操作.要授予此应用程序所需的权限,请与您的系统管理员联系或在配置文件中更改应用程序的信任级别.
异常详细信息:System.Security.SecurityException:找不到源,但无法搜索部分或全部事件日志.无法访问的日志:安全性
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
堆栈跟踪:
[SecurityException:找不到源,但无法搜索部分或全部事件日志.无法访问的日志:安全.]
System.Diagnostics.EventLog.FindSourceRegistration(String source,String machineName,Boolean readOnly)+562 System.Diagnostics.EventLog.SourceExists(String source,String machineName)+251
[剪断]
这些是我为尝试解决它而做的事情:
授予"Everyone"对密钥的完全访问权限HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Security.这很有效.但我自然不能在生产中这样做.所以我在运行应用程序几分钟后删除了"Everyone"权限,错误重新出现.
我在应用程序日志和安全日志中创建了源代码(我通过regedit对其进行了验证)在安装期间使用提升的权限,但错误仍然存在.
我在应用程序中给了应用程序一个完整的信任级别web.config(并使用appcmd.exe),但无济于事.
有没有人能够了解这里可以做些什么?
PS:这是对这个问题的跟进.我按照给出的答案但没有用(见上面的#2).
我收到以下异常.我在Registry编辑的Eventlogs上完全控制了Asp.net帐户.
[SecurityException:找不到源,但无法搜索部分或全部事件日志.无法访问的日志:安全.]
Run Code Online (Sandbox Code Playgroud)System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly, Boolean wantToCreate) +664 System.Diagnostics.EventLog.SourceExists(String source, String machineName, Boolean wantToCreate) +109 System.Diagnostics.EventLog.SourceExists(String source) +14 Microsoft.ApplicationBlocks.ExceptionManagement.DefaultPublisher.VerifyValidSource() +41
我想这是由于服务器上的一些配置问题?
我已经创建了一个小的C#winforms应用程序,作为一个附加功能,我正在考虑添加某种形式的错误记录到它.任何人都有任何关于这方面的好方法的建议?这是我从未考虑过添加到以前的项目中的功能,所以我愿意接受有更多经验的开发人员的建议.
我正在考虑将异常写入指定的文本文件或可能的数据库表.这是一个应用程序,将使用几个月,然后在更大的产品完成后丢弃.
在IIS 7下运行的ASP.Net 3.5似乎不允许开箱即用.
if (!EventLog.SourceExists("MyAppLog"))
EventLog.CreateEventSource("MyAppLog", "Application");
EventLog myLog = new EventLog();
myLog.Source = "MyAppLog";
myLog.WriteEntry("Message");
Run Code Online (Sandbox Code Playgroud) 以下是我在运行紧随其后的代码时遇到的异常:
找不到源,但无法搜索部分或全部事件日志.无法访问的日志:安全性.
代码是
if (!EventLog.SourceExists(this.EventLogSource))
Run Code Online (Sandbox Code Playgroud)
异常的内容对我来说很有意义,这就是为什么不这样做.此行在Visual Studio 2010,.NET 4中作为控制台应用程序运行(暂时).我已经在不同的环境中运行了这个,但我不希望我是远程桌面的事实打破这种方法.我试过更改HKML\CCS\Services\eventlog权限 - 无济于事,以及C:\Windows\System32\Winevt\Logs\Security.evtx权限.再一次,无济于事.
我的问题如下:
任何建议都会很棒.