Asp.net core 无法解析类型为';System.String';试图激活';MyService';
我在我的Service Fabric无状态ASP.NET核心应用程序中看到以下异常Asp.net core 无法解析类型为';System.String';试图激活';MyService';,asp.net-core,dependency-injection,.net-core,azure-service-fabric,Asp.net Core,Dependency Injection,.net Core,Azure Service Fabric,我在我的Service Fabric无状态ASP.NET核心应用程序中看到以下异常 System.InvalidOperationException: Unable to resolve service for type 'System.String' while attempting to activate 'MyService'. at Microsoft.Extensions.DependencyInjection.ServiceLookup.Service.PopulateCall
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) {
//...
}
容器无法知道要将依赖字符串注入服务的值
在上述情况下,将服务添加到集合时,可以使用其中一个重载提供缺少的字符串
//...
services.AddScoped<IMyService>(_ => new MyService("value here"));
//...
/。。。
AddScoped(=>newmyservice(“这里的值”);
//...
这样,当服务被激活时,它可以被正确地返回
文档参考:->'MyService'可能需要构造函数中的字符串,而IoC容器不知道如何解析它,您需要查看服务注册以将其配置为字符串requiredIt。也许这是显而易见的。想想看,我以前从未对字符串产生过依赖。只会像伊洛格一样思考@DiegoMendesDuh,它不知道从哪里获取字符串实例!