Je pensais ajouter un peu d'aide pour ceux qui luttent avec cette mvc5 et web api 2.
Tout d'abord ajouter les packages nuget
- Autofac
- Autofac asp.net mvc 5.1 intégration
- Autofac asp.net l'api web 2.1 intégration
en complément global dans application_start (ou app_start classe) ajouter un appel à l'au-dessous de la classe
AutofacConfig.RegisterAutoFac();
maintenant, ajoutez cette classe sous App_start
using System.Reflection;
using System.Web.Http;
using System.Web.Http.Controllers;
using System.Web.Mvc;
using Autofac;
using Autofac.Integration.Mvc;
using Autofac.Integration.WebApi;
namespace Example1.Web
{
public class AutofacConfig
{
public static IContainer RegisterAutoFac()
{
var builder = new ContainerBuilder();
AddMvcRegistrations(builder);
AddRegisterations(builder);
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
return container;
}
private static void AddMvcRegistrations(ContainerBuilder builder)
{
//mvc
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterAssemblyModules(Assembly.GetExecutingAssembly());
builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
builder.RegisterModelBinderProvider();
//web api
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).PropertiesAutowired();
builder.RegisterModule<AutofacWebTypesModule>();
}
private static void AddRegisterations(ContainerBuilder builder)
{
//builder.RegisterModule(new MyCustomerWebAutoFacModule());
}
}
}
À partir de maintenant, pour chaque nouvelle assemblée, vous ajoutez au projet ajouter un nouveau module, puis inscrire le module dans le AddRegisterations fonction (exemple donné)
Note:
Je suis retourné le conteneur, ce n'est pas nessasary.