使用OWIN与Autofac和WebApi2存在问题。基本上,构造函数没有被注入。
public class Startup
{
public void Configuration(IAppBuilder app)
{
var config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "Default Route",
routeTemplate: "{controller}.{ext}"
);
config.Routes.MapHttpRoute(
name: "Default Route with Id",
routeTemplate: "{controller}/{id}.{ext}",
defaults: new { id = RouteParameter.Optional }
);
var builder = new ContainerBuilder();
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
builder.Register(c => new Logger()).As<ILogger>().InstancePerRequest();
var container = builder.Build();
var resolver = new AutofacWebApiDependencyResolver(container);
GlobalConfiguration.Configuration.DependencyResolver = resolver;
app.UseAutofacWebApi(GlobalConfiguration.Configuration);
app.UseWebApi(config);
}
}
public class UsersController : ApiController
{
private readonly ILogger _logger;
public UsersController(ILogger logger)
{
_logger = logger;
}
}
我正在使用Autofac.Integration.Owin nuget alpha包。我错过了什么?
答案 0 :(得分:11)
尝试一直使用config
配置对象。在中间,您切换到GlobalConfiguration
。在OWIN + Web API中,您不会使用静态配置对象,只是在配置OWIN应用程序时创建的实例。
答案 1 :(得分:0)
不建议将GlobalConfiguration与OWIN集成一起使用,而仅使用您创建的配置。
来自Autofac Documentation- OWIN集成中的一个常见错误是使用GlobalConfiguration.Configuration。在OWIN中,您可以从头开始创建配置。使用OWIN集成时,您不应在任何地方引用GlobalConfiguration.Configuration。