我正在尝试将 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 [剪辑]
“/”应用程序中的服务器错误。
安全异常
说明:应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请联系您的系统管理员或在配置文件中更改应用程序的信任级别。
异常详细信息: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
[剪辑]
这些是我为尝试解决它所做的事情:
授予“所有人”对密钥的完全访问权限HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Security。这行得通。但我自然可以在生产中做到这一点。所以我在运行应用程序几分钟后删除了“所有人”权限,错误再次出现。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Security
我在安装过程中使用提升的权限在应用程序日志和安全日志中创建了源(并通过 regedit 验证了它存在),但错误仍然存在。
我在文件中为应用程序提供了完全信任级别web.config(并使用appcmd.exe),但无济于事。
web.config
appcmd.exe
有没有人知道在这里可以做什么?
解决方案是授予“网络服务”帐户对 EventLog/Security 密钥的读取权限。