3

我有一个 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(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 应用程序池作为 LocalSystem 和 ApplicationPoolIdentity 运行。

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

谢谢!

4

2 回答 2

2

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

您可以添加AllowPartiallyTrustedCallers属性或使用强名称密钥对程序集进行签名。

于 2009-12-01T01:21:47.097 回答
0

如果您正在写入默认应用程序日志,则需要先向 LocalSystem 提供权限,然后才能在应用程序池中使用它。打开注册表编辑并转到

 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services\eventlog\Application

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

在此处输入图像描述

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

于 2016-01-29T14:06:54.830 回答