【问题标题】:EventLog permission failing in ASP.Net on Win7Win7 上的 ASP.Net 中的 EventLog 权限失败
【发布时间】:2009-12-01 01:09:26
【问题描述】:

我有一个 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(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 或一些本地权限等)。

谢谢!

【问题讨论】:

    标签: asp.net security exception event-log


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

       HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services\eventlog\Application
      

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

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

      【讨论】:

        猜你喜欢
        • 2013-08-14
        • 1970-01-01
        • 1970-01-01
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-08
        • 1970-01-01
        相关资源
        最近更新 更多