我有一个在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或一些本地权限等)。
谢谢!
答案 0 :(得分:2)
此link似乎可以讨论您遇到的问题。 我不确定XP和win 7上的默认CAS(代码访问安全性)之间的区别,但是写入事件日志(以及所有调用程序集)的程序集必须具有EventLogPermission。
您可以添加AllowPartiallyTrustedCallers属性或使用strong name key对程序集进行签名。
答案 1 :(得分:0)