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