Я пытаюсь использовать Autofac с контроллерами WebApi. У меня есть:Autofac с контроллером Web Api
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
AutofacConfig.Register();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
Вот мой AutofacConfig:
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();
}
}
Тогда я пытаюсь установить DependencyResolver:
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);
}
}
Но во время запроса я получаю: «Убедитесь, что контроллер имеет беззадачный публичный конструктор ».
Также я попытался установить DependencyResolver в классе AutofacConfig, так же, как в tutorial
Что случилось с этим?
Я определяю свой контейнер как статическое поле на Global.asax и создаю его после всех таблиц. Контейнер = новый WindsorContainer(). Установить (FromAssembly.This()); GlobalConfiguration.Configuration.DependencyResolver = new WindsorDependencyResolver (Container.Kernel); – Fran