Asp.net-Core

嘗試啟動“MyService”時無法解析“System.String”類型的服務

  • April 13, 2018

我在我的 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可以在將服務添加到集合時使用其中一種重載來提供缺失值。

//...

services.AddScoped<IMyService>(_ => new MyService("value here"));

//...

這樣,當服務被啟動時,它可以被正確地返回。


文件參考:ASP.NET Core 中的依賴注入->建構子注入行為 (v2.1)

引用自:https://stackoverflow.com/questions/49824690