Comment résoudre les contrôleurs API Web à l'aide d'Autofac dans une API Web mixte et une application MVC?
Salut j'ai une application MVC où je l'ai défini quelques dépendances à mon API Web.
public class AutofacWebApiDependenceResolver : IDependencyResolver
{
private readonly IComponentContext container;
public AutofacWebApiDependenceResolver(IContainer container)
{
if (container == null)
{
throw new ArgumentNullException("container");
}
this.container = container;
}
public object GetService(Type serviceType)
{
if (serviceType == null)
{
throw new ArgumentNullException("serviceType");
}
var ret = this.container.ResolveOptional(serviceType) ;
return ret;
}
public IEnumerable<object> GetServices(Type serviceType)
{
if (serviceType == null)
{
throw new ArgumentNullException("serviceType");
}
Type enumerableType = typeof(IEnumerable<>).MakeGenericType(serviceType);
var ret = (IEnumerable<object>)this.container.ResolveOptional(enumerableType);
return ret;
}
}
Ensuite dans mon programme d'amorçage de la classe je l'appelle dans Application_Start comme suit:
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependenceResolver((IContainer)container);
Quand je déboguer le code, je peux le voir il y a des enregistrements de tous les services avec mon DependencyResolver, mais je reçois toujours le message d'erreur suivant:
Une erreur s'est produite.Type 'WebApp.Les contrôleurs.AuthenticateController'
ne pas avoir un constructeur par défaut
Voici le code de mon contrôleur:
public class AuthenticateController : ApiController
{
private readonly IFormsAuthenticationService formsAuthenticationService;
private readonly IMemberShipProvider memberShip;
private readonly IDataService dataService;
public AuthenticateController(
IMemberShipProvider memberShip,
IFormsAuthenticationService formsAuthenticationService, IDataService dataService)
{
this.memberShip = memberShip;
this.formsAuthenticationService = formsAuthenticationService;
this.dataService= dataService;
}
}
Comment puis-je amener les paramètres de l'api contrôleurs. Le Simple contrôleurs fonctionnent très bien.
source d'informationauteur progrAmmar
Vous devez vous connecter pour publier un commentaire.
Je suggère ce qui suit pour faire ce travail dans votre application avec les deux MVC et WebApi.
D'abord votre projet a besoin d'avoir des références à la suite
Puis dans votre Autofac de l'inscription, vous aurait besoin de s'Inscrire à la fois MVC et WebApi Contrôleurs et autres enregistrements que vous avez besoin. Ensuite, fixez le Contenant à la fois le MVC DI et la WebApi DI.
J'espère que cette aide.
nemesv conseils du a fait le tour
builder.RegisterApiControllers(Assembly.GetExecutingAssembly())
Appel
builder.RegisterApiControllers
avant d'appelerbuilder.Build()