2011-02-03 51 views
3

我有一个网站与elmah运行它登录到一个SQL框。在我的测试环境中,它是一台IIS 7机器,并且运行良好。当我上传到运行IIS 6的网络解决方案Web时,出现错误在IIS 6 elmah框

[SecurityException: Request for the permission of type 'System.Configuration.ConfigurationPermission, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' failed.] 
    System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0 
    System.Security.CodeAccessPermission.Demand() +58 
    System.Configuration.BaseConfigurationRecord.CheckPermissionAllowed(String configKey, Boolean requirePermission, Boolean isTrustedWithoutAptca) +99 

该网站设置为运行.net 3.5。我们所有的页面都能正常工作,但elmah给出了这个错误。我已经做了一些搜索,但无法找到我设置不正确的东西。希望别人已经解决了这个问题。

回答

2

我怀疑你的主机在Middle Trust中运行ASP.NET。有几件事要尝试。

requirePermission="false"属性添加到每个在你web.config宣布ELMAH构成部分,例如:

<sectionGroup name="elmah"> 
    <section name="security" type="Elmah.SecuritySectionHandler, Elmah" 
      requirePermission="false"/> 
    <section name="errorLog" type="Elmah.ErrorLogSectionHandler, Elmah" 
      requirePermission="false"/> 
</sectionGroup> 

如果这不工作,你也可以尝试重写信任度在增加这<system.web>web.config文件:

<trust level="Full"/> 

如果不工作,那么你可能需要联系您的托管服务提供商并要求他们放松自己的信任策略。但是,如果您的网站位于共享池中,则他们不太可能会接受此操作。

更新:

关于requirePermission属性:默认的中等信任的政策不允许部分受信任的调用方访问配置文件设置,即使是在自己的应用程序。

您可以通过设置requirePermission="false"来选择覆盖应用程序的本地配置设置。这是在web.config文件中的<section name="..." type="..." />声明中完成的。所以,当你设置:

<section name="errorLog" type="Elmah.ErrorLogSectionHandler, Elmah" 
     requirePermission="false"/ 

有效的说法是什么,请给予ELMAH权限读取此设置:

<errorLog type="Elmah.VistaDBErrorLog, Elmah" connectionStringName="ElmahDB" /> 
+0

该诀窍...感谢你的帮助。所以必要的权限..究竟是什么适用于 – jvcoach23 2011-02-03 22:08:52