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)
どうすれば解決できないSystem.String
?これをさらにデバッグするにはどうすればよいですか?
Asp.Net CoreのデフォルトのDIフレームワークでは、使用可能な機能が制限されています。次のようなクラスコンストラクターを想定
public MyService(string dependencyString) {
//...
}
コンテナは、依存文字列に使用する値をサービスに注入する方法を知ることができません。
上記の場合、不足しているstring
は、サービスをコレクションに追加するときにオーバーロードの1つを使用して提供できます。
//...
services.AddScoped<IMyService>(_ => new MyService("value here"));
//...
そのようにして、サービスがアクティブ化されているときに適切に返されます。
ドキュメントリファレンス: ASP.NET Coreでの依存性注入 -> コンストラクター注入動作(v2.1)