【发布时间】:2016-05-06 10:07:37
【问题描述】:
我正在尝试将 Autofac 与 WebApi 控制器一起使用。我有:
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);
}
}
但是在我收到的请求期间:“确保控制器有一个无参数的公共构造函数”。
我还尝试在 AutofacConfig 类中设置 DependencyResolver,就像在 tutorial 中一样
这有什么问题?
【问题讨论】:
-
我将容器定义为 Global.asax 上的静态字段,并在所有样板寄存器之后实例化它。 Container = new WindsorContainer().Install(FromAssembly.This()); GlobalConfiguration.Configuration.DependencyResolver = new WindsorDependencyResolver(Container.Kernel);
标签: c# asp.net-web-api dependency-injection autofac