猿问

无法将 autofac 与 web api 2 和 mvc 集成

这件事需要我一个星期的时间我已经做了很多方法来找到解决方案


mvc 与 autofac 完全集成,但 web api NO 和 NO!:-(


这是我的代码: AutofacDi


 public static class AutofacDi

{

    public static ValueTuple<IContainer, HttpConfiguration> Initialize()

    {

        var assembly = Assembly.GetExecutingAssembly();

        var builder = new ContainerBuilder();

        var config = GlobalConfiguration.Configuration;


        builder.RegisterControllers(assembly);

        builder.RegisterApiControllers(assembly).PropertiesAutowired();

        builder.RegisterHttpRequestMessage(config);

        builder.RegisterAssemblyModules(assembly);

        builder.RegisterAssemblyTypes(assembly).PropertiesAutowired();

        builder.RegisterFilterProvider();

        builder.RegisterWebApiFilterProvider(config);


        builder.RegisterModelBinders(assembly);

        builder.RegisterWebApiModelBinderProvider();

        builder.RegisterModelBinderProvider();

        builder.RegisterModule<AutofacWebTypesModule>();

        builder.RegisterSource(new ViewRegistrationSource());


        builder.RegisterType<T4MVC.Dummy>().AsSelf();

        builder.RegisterType<FoodDbContext>()

            .As<IUnitOfWork>()

            .InstancePerLifetimeScope();


        builder.Register(context => (FoodDbContext)context.Resolve<IUnitOfWork>())

            .As<FoodDbContext>()

            .InstancePerLifetimeScope();


        builder.RegisterType<ApplicationDbContext>().As<DbContext>().InstancePerLifetimeScope();

        builder.RegisterType<UserStore<ApplicationUser>>().As<IUserStore<ApplicationUser>>();

        builder.RegisterType<ApplicationUserManager>();

        builder.RegisterType<ApplicationSignInManager>();

        builder.Register(c => new IdentityFactoryOptions<ApplicationUserManager>()

        {

            DataProtectionProvider = new DpapiDataProtectionProvider("FoodBaMa")

        });


素胚勾勒不出你
浏览 148回答 2
2回答

至尊宝的传说

看来您可能已经解决了您的问题,我希望这是真的。这里有很多东西需要消化,但我确实看到了一个关于 OWIN 集成和 Web API 的常见错误,如 Autofac文档中所述:OWIN 集成中的一个常见错误是使用GlobalConfiguration.Configuration.&nbsp;在 OWIN 中,您可以从头开始创建配置。GlobalConfiguration.Configuration使用 OWIN 集成时,不应在任何地方引用。您可能会在设置中遇到其他/其他挑战;如果这样做,请尝试摆脱GlobalConfiguration.Configuration.

忽然笑

我通过评论解决了这个问题:builder.RegisterWebApiFilterProvider(config);和builder.RegisterHttpRequestMessage(config);在AutofacDi
随时随地看视频慕课网APP
我要回答