0

Elmah 正在将错误正确地记录到我的数据库中,但我无法访问 /elmah。我错过了什么?这在没有为 Elmah 实现控制器的情况下工作,但现在它不起作用。这是在 git 合并之后。所有配置都已重置为之前的工作方式。

<system.web>
    <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>
    <appSettings>
        <add key="elmah.mvc.disableHandler" value="false" />
        <add key="elmah.mvc.disableHandleErrorFilter" value="false" />
        <add key="elmah.mvc.requiresAuthentication" value="false" />
        <add key="elmah.mvc.IgnoreDefaultRoute" value="false" />
        <add key="elmah.mvc.allowedRoles" value="*" />
        <add key="elmah.mvc.allowedUsers" value="admin" />
        <add key="elmah.mvc.route" value="elmah" />
    </appSettings>
    <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>
<elmah>
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="[MyCSName]" />
</elmah>
</system.webServer>
4

3 回答 3

1

我意识到这是一个老问题,但它是谷歌搜索结果的热门。

如果您想继续使用 Funq,另一个选择是将要扫描的其他程序集传递给 funq。改变

new ServiceStack.Mvc.FunqControllerFactory(container);

new FunqControllerFactory(container, typeof(ElmahLogger).GetAssembly(), typeof(ElmahController).GetAssembly())

于 2014-10-30T00:55:48.787 回答
1

我也在使用 ServiceStack,这对我有用:

ControllerBuilder.Current.SetControllerFactory(new FunqControllerFactory(container, 
typeof (ElmahController).Assembly));
于 2015-12-22T23:48:36.850 回答
0

这很可能是因为您使用的是 ServiceStack Funq IOC。

App_Start\AppHost.cs(名称可能不同)中,尝试注释掉这一行:

//Set MVC to use the same Funq IOC as ServiceStack
//ControllerBuilder.Current.SetControllerFactory(new ServiceStack.Mvc.FunqControllerFactory(container)); 

问候。

于 2014-03-05T05:14:51.133 回答