Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.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
C# 基于启动时请求的.NET核心自定义服务_C#_.net_Asp.net Core_Dbcontext - Fatal编程技术网

C# 基于启动时请求的.NET核心自定义服务

C# 基于启动时请求的.NET核心自定义服务,c#,.net,asp.net-core,dbcontext,C#,.net,Asp.net Core,Dbcontext,以下是基于请求依赖项注入的.NET core示例: 我有基于一些http头的不同服务实现,我想根据请求加载特定的服务 在startup.cs中,我有以下代码: services.AddDbContext<MyContext>(options => options.UseMysql); services.AddTransient<IMyService>(serviceProvider => { var

以下是基于请求依赖项注入的.NET core示例:

我有基于一些http头的不同服务实现,我想根据请求加载特定的服务

在startup.cs中,我有以下代码:

 services.AddDbContext<MyContext>(options => options.UseMysql);

services.AddTransient<IMyService>(serviceProvider =>
            {
                var context = serviceProvider.GetRequiredService<IHttpContextAccessor>().HttpContext;
                var header = context.Request.Headers["mycustomheader"];
                if (header == "first") return new MyFirstService();
                else return new SecondService();
            });

这在.NET core中可能吗?

您需要使用DI:

var context = serviceProvider.GetRequiredService<MyContext>();
var context=serviceProvider.GetRequiredService();

这与您为获取IHttpContextAccessor所做的操作相同,您需要使用DI:

var context = serviceProvider.GetRequiredService<MyContext>();
var context=serviceProvider.GetRequiredService();

这与获取
IHttpContextAccessor

所做的操作相同,您应该能够使用DI来实现:
serviceProvider.GetRequiredService()
。这与您获取
IHttpContextAccessor
所做的操作相同,感谢您的工作。您应该能够使用DI实现这一点:
serviceProvider.GetRequiredService()
。这与您获取
IHttpContextAccessor
所做的操作相同,谢谢您的帮助