Ich versuche Autofac mit WebApi-Controller zu verwenden. Ich habe:Autofac mit Web-API-Controller
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
AutofacConfig.Register();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
Hier mein AutofacConfig ist:
public class AutofacConfig
{
public static IContainer Container { get; private set; }
public static void Register()
{
var builder = new ContainerBuilder();
// Register your Web API controllers.
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
//Register repositories and services.
Container = builder.Build();
}
}
Dann versuche ich DependencyResolver zu setzen: Empfangen ich
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Filters.Add(new ExceptionHandlingAttribute());
var container = AutofacConfig.Container;//I have registered controllers here!!!
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
}
}
Aber während der Anfrage: „Stellen Sie sicher, dass der Controller einen parameterlosen öffentlichen Konstruktor hat ".
Auch habe ich versucht, die DependencyResolver in der AutofacConfig Klasse zu setzen, genau wie in den tutorial
Was ist daran falsch?
Ich definiere meinen Container als statisches Feld auf Global.asax und instanziiere es nach allen Boilerplate-Registern. Container = neuer WindsorContainer(). Install (FromAssembly.This()); GlobalConfiguration.Configuration.DependencyResolver = neuer WindsorDependencyResolver (Container.Kernel); – Fran