Wie löse ich Web-API-Controller mithilfe von Autofac in einer gemischten Web-API- und MVC-Anwendung auf?

Hi Ich habe eine MVC-Anwendung, in der ich einige Abhängigkeiten zu meiner Web-API definiert habe.

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;
    }
}

Dann in meiner Bootstrapper-Klasse rufe ich es in Application_Start wie folgt auf:

GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependenceResolver((IContainer)container);

Wenn ich den Code debugge, kann ich sehen, dass für alle Dienste mit meinem DependencyResolver Registrierungen vorhanden sind, es wird jedoch weiterhin die folgende Fehlermeldung angezeigt:

Es ist ein Fehler aufgetreten. Typ 'WebApp.Controllers.AuthenticateController' hat keinen Standardkonstruktor.

Hier ist der Code für meinen Controller:

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;
     }

}

Wie kann ich Parameter auf die API-Controller bringen. Die Simple-Controller funktionieren einwandfrei.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage