Ich weiß, dass es schon gefragt und beantwortet wurde - der Grund, warum ich frage, ist, weil ich alle vorgeschlagenen Lösungen für dieses Problem versucht habe, aber immer noch nicht lösen kann es.Autofac - Stellen Sie sicher, dass der Controller einen parameterlosen öffentlichen Konstruktor hat
Ich habe ein ASP.NET Web API 2.0-Projekt. Ich habe Autofac, Autofac.Mvc5 und Autofac.WebApi2 Abhängigkeiten installiert. Wenn ich versuche, eine API-Controller nennen ich die folgende Fehlermeldung erhalten:
An error occurred when trying to create a controller of type 'MyController'. Make sure that the controller has a parameterless public constructor.
In meinem Global.asax
habe ich einen Anruf an IocConfig.Config()
, die ich in App_Start
gesetzt haben:
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);
}
}
Und dies ist der Konstruktor für MyController
:
public MyController(IMyLogger logger)
Wenn ich versuche, es zu nennen ich den angegebenen Fehler über den Konstruktor erhalten. Was vermisse ich?
War diese gelöst? Ich habe das gleiche Problem. Ich benutze Asp.Net Web api2.0 – Kanchana