Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 无法解析类型为';System.String';试图激活';MyService';_Asp.net Core_Dependency Injection_.net Core_Azure Service Fabric - Fatal编程技术网

Asp.net core 无法解析类型为';System.String';试图激活';MyService';

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

我在我的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.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,它不知道从哪里获取字符串实例!