ELMAH的错误日志记录无法在IIS中使用basicHttpBinding托管的WCF服务中工作

时间:2010-12-17 12:17:42

标签: wcf exception-handling error-handling elmah

我按照本文http://dotnetslackers.com/articles/aspnet/Getting-ELMAH-to-work-with-WCF-services.aspx中提到的步骤配置WCF服务以通过ELMAH设置错误日志记录。它与wsHttpBinding一起使用Visual Studio webserver,但是当我在IIS(5/6)中托管它并将绑定更改为basicHttpBinding时,它不会记录错误。我尝试将错误信号代码更改为“Elmah.ErrorLog.GetDefault(null).Log(new Error(ex));”,如此链接ELMAH - Exception Logging without having HttpContext所述,但这也无济于事。不确定我还需要做什么。请帮忙。这里是WCF服务的配置(我尝试评论和取消注释aspnetcompatibility,但是没有用)。如果有一个带有basicHttpBinding的工作样本,那将非常有帮助。提前谢谢。

  <system.serviceModel>
    <!--<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />-->
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpEndpointBinding">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="ElmahWCF.Service1Behavior" name="ElmahWCF.Service1">
        <endpoint address="" binding="basicHttpBinding"
          bindingConfiguration="BasicHttpEndpointBinding"
          name="BasicHttpEndpoint" contract="ElmahWCF.IService1">
        </endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ElmahWCF.Service1Behavior">
           <!--To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment--> 
          <serviceMetadata httpGetEnabled="true"/>
           <!--To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information--> 
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

1 个答案:

答案 0 :(得分:2)

我发现它正在发送邮件,但没有将错误记录到数据库中。它可能是数据库的权限问题(即使我对我的Windows登录标识具有完全访问权限,并且在使用visual studio webserver并使用wsHttpBinding时它可以正常登录)。我将它部署到服务器并使用应用程序池中的其他帐户进行配置,然后将错误成功记录到数据库,而无需对文章中的代码进行任何更改。我仍然不确定为什么它不会从本地IIS将​​错误记录到数据库(我甚至尝试在web.config中将模拟设置为true,以便它在记录时使用我的id),但这对我来说不是一个大问题,因为它在部署后工作正常。感谢。