我有一个 ASP.Net 应用程序 .net 3.5 SP1,在 Win7 中运行。在登录过程中,ASP.Net 登录控件中的某些内容导致写入事件日志中的安全日志(这听起来对我来说可以接受)。问题是该应用程序似乎没有执行此操作的权限。有错误的是:
描述:应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请联系您的系统管理员或在配置文件中更改应用程序的信任级别。
例外详细信息:System.Security.SecurityException:请求“System.Diagnostics.EventLogPermission,System,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”类型的权限失败。
堆栈跟踪没有显示我的应用程序中的一行代码,它全部在框架中。
最后 5 行是:
System.Security.CodeAccessSecurityEngine.Check(对象需求, StackCrawlMark& stackMark, Boolean isPermSet) +0
System.Security.CodeAccessPermission.Demand() +61
System.Diagnostics.EventLog..ctor(字符串 logName, 字符串 machineName, 字符串源) +125
系统.诊断.EventLog..ctor() +24
System.Diagnostics.EventLog.WriteEntry(字符串源,字符串消息,EventLogEntryType类型,Int32事件ID,Int16类别,Byte[] rawData)+52
这个应用程序在 XP SP2 上运行良好。我四处寻找,但找不到如何授予权限。我尝试将应用程序池作为 LocalSystem 和 ApplicationPoolIdentity 运行。
让它运行的最简单方法是什么?它是我的本地开发机器,我不在乎是否打开安全漏洞,只要我不必修改代码(即我需要解决方案是 INETMGR 更改或 web.config 或一些本地权限等) )。
Thanks!
This link http://social.msdn.microsoft.com/Forums/en-US/clr/thread/95d5c5e0-7b74-4880-84d7-5329891ab86a似乎正在讨论您遇到的问题。
我不确定 XP 与 win 7 上的默认 CAS(代码访问安全性)之间的差异,但是写入事件日志的程序集(以及所有调用程序集)必须具有 EventLogPermission。
您可以添加允许部分受信任的呼叫者 http://support.microsoft.com/kb/839300使用 a 属性或签署程序集强名称键 http://msdn.microsoft.com/en-us/library/k5b5tt23%28VS.71%29.aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)