无法解析Elmah.Mvc.ElmahController类型所需的依赖项

时间:2014-01-16 03:08:42

标签: elmah elmah.mvc

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>

3 个答案:

答案 0 :(得分:1)

我意识到这是一个老问题,但它是google搜索结果的最佳结果。

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

new ServiceStack.Mvc.FunqControllerFactory(container);

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

答案 1 :(得分:1)

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

ControllerBuilder.Current.SetControllerFactory(new FunqControllerFactory(container, 
typeof (ElmahController).Assembly));

答案 2 :(得分: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)); 

问候。