Win7上的ASP.Net中的EventLog权限失败

时间:2009-12-01 01:09:27

标签: asp.net security exception event-log

我有一个在Win7中运行的ASP.Net应用程序.net 3.5 SP1。在登录过程中,ASP.Net登录控件中的某些内容导致在事件日志中写入安全日志(这听起来对我来说是可接受的)。问题是应用程序似乎无权执行此操作。错误是:

描述:应用程序尝试执行安全策略不允许的操作。要授予此应用程序所需的权限,请与您的系统管理员联系或在配置文件中更改应用程序的信任级别。

异常详细信息:System.Security.SecurityException:请求类型为“System.Diagnostics.EventLogPermission,System,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”的权限失败。

堆栈跟踪不会显示来自我的应用程序的单行代码,它全部在框架中。 最后5行是:    System.Security.CodeAccessSecurityEngine.Check(Object demand,StackCrawlMark& stackMark,Boolean isPermSet)+0    System.Security.CodeAccessPermission.Demand()+ 61    System.Diagnostics.EventLog..ctor(String logName,String machineName,String source)+125    System.Diagnostics.EventLog..ctor()+24    System.Diagnostics.EventLog.WriteEntry(String source,String message,EventLogEntryType type,Int32 eventID,Int16 category,Byte [] rawData)+52

这个相同的应用程序在XP SP2上运行良好。我已经找到了,无法找到如何授予权限。我已经尝试将hte app pool作为LocalSystem和ApplicationPoolIdentity运行。

最简单的方法是什么?它是我的本地开发机器,我不在乎我是否打开安全漏洞,只要我不需要修改代码(即我需要解决方案是INETMGR更改或web.config或一些本地权限等)。

谢谢!

2 个答案:

答案 0 :(得分:2)

link似乎可以讨论您遇到的问题。 我不确定XP和win 7上的默认CAS(代码访问安全性)之间的区别,但是写入事件日志(以及所有调用程序集)的程序集必须具有EventLogPermission。

您可以添加AllowPartiallyTrustedCallers属性或使用strong name key对程序集进行签名。

答案 1 :(得分:0)

如果您要写入默认的应用程序日志,则需要在应用程序池中使用之前向LocalSystem提供权限。 打开RegistryEdit并转到

 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services\eventlog\Application

右键单击“应用程序”并单击“权限”

enter image description here

如果列表中没有用户( LOCALSYSTEM ),则添加允许完全控制