Elmah登录自托管的休息应用程序

时间:2014-04-02 17:23:22

标签: .net rest console-application elmah

我有一个控制台应用程序,它从自托管的rest api项目中调用服务(比如说http://localhost:8000/restapi)。

在其余的api项目中,Elmah被用来记录任何异常。

现在,当我从控制台应用程序访问服务时,如果有一些例外,Elmah没有记录它!

请注意,当Rest Api在IIS中托管,并且从那里调用服务时,Elmah日志记录工作正常。

有人可以建议吗?

其余API的配置

<configSections>
    <sectionGroup name="elmah">
      <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
      <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
      <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
      <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
    </sectionGroup>
    </configSections>

    <httpHandlers> 
    <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
    </httpHandlers> 

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

    <elmah>
      <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
    </elmah>

    <system.web>
    <httpModules>
       <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
       <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
       <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/>
    </httpModules>
    </system.web>

    <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
       <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
       <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
       <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
    </modules>
    </system.webServer>

1 个答案:

答案 0 :(得分:1)

Herethere

获得一些线索

在从控制台应用程序调用Web API之前,我错过了配置错误日志记录过滤器

这里是遗漏的位 -

var config = HttpSelfHostConfiguration("http://localhost:8000");
config.Filters.Add(new MyElmahErrorLoggingFilter());
var server = new HttpSelfHostServer(config);