将ELMAH添加到WCF项目后的SecurityException

时间:2010-03-25 20:43:13

标签: wcf elmah iis-7.5 securityexception

我在IIS 7.5上使用ELMAH的WCF(.Net 3.5)站点出现问题。这是异常消息:

System.Security.SecurityException: Request for the permission of type 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

为了验证它是IIS7.5上的WCF和ELMAH的组合,我在VS2008中创建了一个新的WCF服务项目,并在IIS 7.5站点下创建了一个新的应用程序。我发布了它并确保它没问题。然后我添加了ELMAH DLL。还好。然后将ELMAH configSection引用添加到Web.config。还好。然后我将ELMAH的东西添加到http.andb中的httpHandlers和httpModules(是的,我知道这不适用于7.5)。还好。然后我将它添加到system.webServer:

中的处理程序和模块中
<handlers>
    :
  <add name="Elmah" verb="POST,GET,HEAD" 
       path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />

<modules>
    :
  <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
  <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
  <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />

然后我得到了安全例外。我没有进行其他配置更改。

一切都可以使用VS dev网络服务器。开发机器是2008 R2 x64,安装了VS 2008 SP1。 WCF服务是为x86构建的(因为原始项目是)。 ELMAH是.Net 3.5 x86版本。 IIS7.5应用程序池设置为允许32位。

知道我需要做些什么来实现这个目标吗?

2 个答案:

答案 0 :(得分:2)

就我而言,我必须在应用程序池中设置“加载User Profile = True”才能使其正常工作。

步骤:

从应用程序池列表中,转到“高级设置”,“过程模型”部分,并将“加载用户配置文件”设置为“True”。

答案 1 :(得分:0)

您必须在IIS管理器中为您的虚拟Web目录添加托管处理程序。

  • 请求路径为:elmah.axd
  • 类型将为:Elmah.ErrorLogPageFactory, Elmah
  • 姓名:Anything you want it to be identified with.

注意:每次从Visual Studio发布更改时,都将删除此设置。所以你必须再次添加它。