在IIS 6服务器上使用ELMAH

3

我有一个网站,上面运行着elmah并记录到一个SQL服务器中。在我的测试环境中,它是在IIS 7机器上运行的,一切都很顺利。但当我上传到运行IIS 6的网络解决方案网站时,出现了错误。

[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 报错了。我进行了一些搜索,但无法找到我设置错误的地方。希望有人已经解决了这个问题。

1个回答

2

我怀疑你的主机商正在以中等信任级别运行ASP.NET。有几件事可以尝试。

web.config中声明的每个Elmah配置部分中添加requirePermission="false"属性,例如:

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

如果这不起作用,您也可以尝试通过在web.config文件中的<system.web>中添加以下内容来覆盖信任级别:

<trust level="Full"/>

如果这样做不起作用,那么您可能需要联系您的主机提供商,并要求他们放宽其信任策略。但是,如果您的站点在共享池中,则他们不太可能会考虑此事。
更新:
关于 requirePermission 属性:默认的 Medium Trust 策略不允许部分受信任的调用者访问配置文件设置,即使是在您自己的应用程序中也是如此。
您可以选择覆盖此设置以针对您的应用程序的本地配置设置,并将 requirePermission="false" 设置为 false。这是在您的 web.config 文件中的
声明中完成的。因此,当您设置时:
<section name="errorLog" type="Elmah.ErrorLogSectionHandler, Elmah" 
       requirePermission="false"/

有效地说,您的意思是请授予Elmah读取此设置的权限:
<errorLog type="Elmah.VistaDBErrorLog, Elmah" connectionStringName="ElmahDB" />

做到了,谢谢你的帮助。所以,所需的权限是什么?它具体适用于什么? - jvcoach23

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接