相关疑难解决方法(0)

Autofac - 确保控制器具有无参数的公共构造函数

我知道它之前已经被问过并回答了 - 我问的原因是因为(我认为)我尝试了所有建议的解决方案来解决这个问题,但仍然无法解决它.

我有一个ASP.NET Web API 2.0项目.我有Autofac,Autofac.Mvc5Autofac.WebApi2安装了依赖项.当我尝试调用API控制器时,我收到以下错误:

尝试创建"MyController"类型的控制器时发生错误.确保控制器具有无参数的公共构造函数.

在我Global.asax的电话中IocConfig.Config(),我已将其置于其中App_Start:

public static class IocConfig
{
    public static void Config()
    {
        var builder = new ContainerBuilder();

        builder.RegisterType<MyLogger>().As<IMyLogger>();

        builder.RegisterApiControllers(Assembly.GetCallingAssembly());
        builder.RegisterWebApiFilterProvider(GlobalConfiguration.Configuration);

        WebApiApplication.Container = builder.Build();

        DependencyResolver.SetResolver(
            new AutofacDependencyResolver(WebApiApplication.Container));
        GlobalConfiguration.Configuration.DependencyResolver =
             new AutofacWebApiDependencyResolver(WebApiApplication.Container);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是以下构造函数MyController:

public MyController(IMyLogger logger)
Run Code Online (Sandbox Code Playgroud)

当我尝试调用它时,我得到有关构造函数的指定错误.我错过了什么?

c# asp.net autofac autofac-configuration

14
推荐指数
3
解决办法
2万
查看次数

Autofac和ASP.NET Web API ApiController

我一直在使用autofac和MVC 3并且喜欢它.我最近将一个项目升级到MVC 4,除了Web Api ApiControllers之外,一切似乎都在工作.我收到以下异常.

An error occurred when trying to create a controller of type 'MyNamespace.Foo.CustomApiController'. Make sure that the controller has a parameterless public constructor.
Run Code Online (Sandbox Code Playgroud)

在我看来,这是DI通过autofac的问题.我是否遗漏了某些东西,或者是否有某些东西在工作中 我知道,MVC4刚出来并且是一个测试版,所以我没想到太多,但想到我可能会遗漏一些东西.

autofac asp.net-mvc-4 asp.net-web-api

9
推荐指数
1
解决办法
1万
查看次数

WebApi DI Autofac - 确保控制器具有无参数的公共构造函数

我正在使用依赖注入编写web api,在存储库的帮助下工作单元和Autofac作为容器.依赖性在24小时前被完美注入,但突然间,当我今天开始工作时,我一直收到错误

"消息":"发生错误.","ExceptionMessage":"尝试创建'SearchController'类型的控制器时发生错误.确保控制器具有无参数的公共构造函数.","ExceptionType":" System.InvalidOperationException"

我将包括我的签名以及我如何注册类型,如果有人可以指出我的代码可能出错,我将非常高兴.

在我的网络api控制器上,我有

 private IUnitOfWork<Listing> _unitOfWork = null;
 public SearchController(IUnitOfWork<Listing> unitOfWork)
 {
     _unitOfWork = unitOfWork;
 }
Run Code Online (Sandbox Code Playgroud)

工作单元采用泛型类型参数来创建存储库.

在我的WebApiConfig.cs中,我正在注册以下类型

 builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>));
 builder.RegisterGeneric(typeof(UnitOfWork<>)).As(typeof(IUnitOfWork<>)).InstancePerDependency();
 builder.RegisterType(typeof(SearchController)).UsingConstructor(typeof(IUnitOfWork<Listing>));
Run Code Online (Sandbox Code Playgroud)

我正在注册SearchController以使用接受IUnitOfWork <>的构造函数.在我添加Mocked单元测试之前一切正常,但出于某种目的,我现在继续得到这个错误.我还注册了DependencyResolver

var container = builder.Build();
var resolver = new AutofacWebApiDependencyResolver(container);
config.DependencyResolver = resolver;
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection unit-of-work autofac asp.net-web-api2

8
推荐指数
1
解决办法
6042
查看次数