Je vois l'exception suivante dans mon application Service Fabric Stateless ASP.NET Core.
System.InvalidOperationException: Unable to resolve service for type 'System.String' while attempting to activate 'MyService'.
at Microsoft.Extensions.DependencyInjection.ServiceLookup.Service.PopulateCallSites(ServiceProvider provider, ISet`1 callSiteChain, ParameterInfo[] parameters, Boolean throwIfCallSiteNotFound)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.Service.CreateCallSite(ServiceProvider provider, ISet`1 callSiteChain)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetResolveCallSite(IService service, ISet`1 callSiteChain)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetServiceCallSite(Type serviceType, ISet`1 callSiteChain)
Comment ne peut-il pas résoudre System.String
? Comment puis-je déboguer davantage?
Le framework DI par défaut dans Asp.Net Core est limité dans les fonctionnalités disponibles. En supposant un constructeur de classe comme
public MyService(string dependencyString) {
//...
}
Il n'y a aucun moyen pour le conteneur de savoir quelle valeur utiliser pour la chaîne dépendante à injecter dans le service.
Dans le cas ci-dessus, le string
manquant peut être fourni à l'aide de l'une des surcharges lors de l'ajout du service à la collection.
//...
services.AddScoped<IMyService>(_ => new MyService("value here"));
//...
De cette façon, lorsque le service est activé, il peut être correctement renvoyé.
Référence de la documentation: injection de dépendance dans ASP.NET Core -> comportement d'injection du constructeur (v2.1)