Api Contrôleur a un sans paramètre constructeur public d'erreur

Je suis à l'aide de l'Unité de faire ma DI et j'ai rencontré l'erreur suivante:-

"Une erreur s'est produite lors de la tentative de créer un contrôleur de type 'UploadController'. Assurez-vous que le contrôleur a un sans paramètre constructeur public."

J'ai le texte suivant UnityResolver:-

public class UnityResolver : IDependencyResolver, IDependencyScope, System.Web.Http.Dependencies.IDependencyResolver
{
    protected IUnityContainer container;

    public UnityResolver(IUnityContainer container)
    {
        if (container == null)
        {
            throw new ArgumentNullException("container");
        }
        this.container = container;
    }

    public object GetService(Type serviceType)
    {
        try
        {
            return container.Resolve(serviceType);
        }
        catch (ResolutionFailedException)
        {
            return null;
        }
    }

    public IEnumerable<object> GetServices(Type serviceType)
    {
        try
        {
            return container.ResolveAll(serviceType);
        }
        catch (ResolutionFailedException)
        {
            return new List<object>();
        }
    }

    public IDependencyScope BeginScope()
    {
        var child = container.CreateChildContainer();
        return new UnityResolver(child);
    }

    public void Dispose()
    {
        container.Dispose();
    }
}

}

J'ai créé un UnityConfig comme suit:-

public static class UnityConfig
{
    public static void RegisterComponents()
    {
        var container = new UnityContainer();

        //register all your components with the container here
        //it is NOT necessary to register your controllers

        //e.g. container.RegisterType<ITestService, TestService>();

        BuildUnityContainer();
        GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
    }

    private static IUnityContainer BuildUnityContainer()
    {
        var container = new UnityContainer();

        //register all your components with the container here
        //you don't need to register controllers
        container.RegisterType<IFileHelpers, FileHelpers>();
        container.RegisterType<IDatabaseHelper, DatabaseHelper>();
        container.RegisterType<IPlayersHelpers, PlayersHelpers>();
        container.RegisterType<IBaseRepository, BaseRepository>();
        container.RegisterType<IAttribsRepository, AttribsRepository>();
        container.RegisterType<IPlayerRepository, PlayerRepository>();
        container.RegisterType<IFileRepository, FileRepository>();
        container.RegisterType<IPlayerAttribsRepository, PlayerAttribsRepository>();

        container.RegisterType<FMContext>();
        container.RegisterType<UserManager<ApplicationUser>>(new HierarchicalLifetimeManager());
        container.RegisterType<IUserStore<ApplicationUser>, UserStore<ApplicationUser>>(new HierarchicalLifetimeManager());

        return container;
    }
}

}

Im initialisation everyting dans le WebApiConfig.cs

    public static void Register(HttpConfiguration config)
    {
        //Web API configuration and services
        //Configure Web API to use only bearer token authentication.
        config.SuppressDefaultHostAuthentication();
        config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

        //Web API configuration and services
        var container = new UnityContainer();
        UnityConfig.RegisterComponents();
        config.DependencyResolver = new UnityResolver(container);

        config.EnableCors();

        //Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

Et c'est mon UploadController classe:-

    public class UploadController : ApiController
{
    private readonly IFileHelpers _fileHelpers;
    private readonly IDatabaseHelper _databaseHelper;
    private readonly IPlayersHelpers _playersHelpers;

    public UploadController(IFileHelpers fileHelpers, IDatabaseHelper databaseHelper, IPlayersHelpers playersHelpers)
    {
        _fileHelpers = fileHelpers;
        _databaseHelper = databaseHelper;
        _playersHelpers = playersHelpers;
    }

    public async Task<HttpResponseMessage> Post()
    {........................}

Pouvez-vous svp m'aider dans la détermination de ce que je fais mal. Dois-je déclarer quelque chose d'autre pour que cela fonctionne?

Merci pour votre aide et le temps

Avez-vous essayé de définir un constructeur public sans paramètres dans le UploadController classe?
Cette erreur peut se produire lorsque DI-cadre n'est pas en mesure de résoudre la mise en œuvre concrète d'une interface. Assurez-vous d'avoir la cartographie( interface pour la mise en œuvre concrète) définie sans aucune erreur.
Je ne souhaite pas définir un constructeur sans paramètre. Je pensais que c'était le point de DI en premier lieu
pouvez-vous me donner un exemple car je n'ai pas compris ce que vous a dit exactement. Pour autant que je sais que j'ai créé tous les mappages pour toutes les interfaces que j'ai créé
Pouvez-vous partager comment le faire? J'ai le même problème.

OriginalL'auteur Johann | 2016-09-02