如何将Autofac和Log4Net与ASP.NET Web API 2应用程序集成

时间:2013-12-17 06:33:17

标签: c# asp.net asp.net-web-api autofac asp.net-mvc-5

过去几个小时我一直在试图整合Autofac和ASP.NET Web API 2应用程序。我一直关注Autofac及其wiki Integrating with ASP.NET Web API

但很明显,这个wiki已经过时了,因为Web API 2.有没有人可以配置我的应用程序来使用Autofac?我只是放弃并回到Ninject。

我已安装AutofacAutofac.WebApi2Autofac.Mvc5

我无法拨打以下内容

containerBuilder.RegisterApiControllers(Assembly.GetExecutingAssembly());

.InstancePerApiRequest();无法访问。事实上,我试图用名称中的Api调用的任何东西都没有定义。 (例如RegisterApiControllers, AsWebApiActionFilterFor, RegisterWebApiFilterProvider, InstancePerApiRequest, InstancePerApiControllerType

另外,我正在尝试使用Log4Net,并且我已经按照wiki实现了模块,现在在wiki中显示的LoggingActionFilter中,我将如何替换此行,因为Log4Net不包含Write的定义

_logger.Write(actionContext.ActionDescriptor.ActionName);

1 个答案:

答案 0 :(得分:2)

尝试使用Autofac.WebApi5 nuget(确保使用安装候选包的语法)而不是Autofac.WebApi2包。然后使用Global.asax.cs中的代码初始化它:

IocContainer container = // code to create your container
GlobalConfiguration.Configuration.DependencyResolver = 
    new AutofacWebApiDependencyResolver(container);

此设置适用于MVC5 / API2项目。