无法解析“Microsoft.AspNetCore.Hosting.IHostingEnvironment”类型的服务

Ego*_*gor 5 c# rabbitmq

在我的 MVC 应用程序中,我从 RabbitMQ 队列中获取了一个事件。开始处理事件

public void Consume()
{
    ConnectionFactory factory = new ConnectionFactory
    {
        //..
    };

    IConnection connection = factory.CreateConnection();
    IModel channel = connection.CreateModel();
    channel.QueueDeclare("MyQueueName", true, false, false, null);

    EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
    consumer.Received += OnReceived;
    channel.BasicConsume("MyQueueName", true, consumer);
}
Run Code Online (Sandbox Code Playgroud)

处理我使用的事件

private async void OnReceived(object model, BasicDeliverEventArgs deliverEventArgs)
{
    var info = Encoding.UTF8.GetString(deliverEventArgs.Body);            
    var model = JsonConvert.DeserializeObject<MyModel>(info);
    if (model != null)
    {
        await _groupServiceProvider.GetService<IMyService>().ProcessEvent(model);
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,为了处理/更新我使用的模型

public class MyService : IMyService
{
    private readonly IHostingEnvironment _env;

    public MyService(IHostingEnvironment env)
    {
        _env = env;
    }        

    public async Task ProcessEvent(MyModel model)
    {
        //.. process model
    }        
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我运行我的应用程序时,我得到

尝试激活“MyProject.MyService”时无法解析“Microsoft.AspNetCore.Hosting.IHostingEnvironment”类型的服务。

在 Microsoft.Extensions.DependencyInjection.ServiceLookup.Service.PopulateCallSites(ServiceProvider provider, ISet 1 callSiteChain, ParameterInfo[] parameters, Boolean throwIfCallSiteNotFound) at Microsoft.Extensions.DependencyInjection.ServiceLookup.Service.CreateCallSite(ServiceProvider provider, ISet1 callSiteChain) 在 Microsoft.Extensions.DependencyInjection.ServiceProvider.GetResolveCallSite(IService service, ISet 1 callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetServiceCallSite(Type serviceType, ISet1 callSiteChain) 在 Microsoft.Extensions.DependencyProvider(TypeService.CreateAccessService) serviceType, ServiceProvider serviceProvider) 在 System.Collections.Concurrent.ConcurrentDictionaryExtensions.GetOrAdd[TKey,TValue,TArg](ConcurrentDictionary2 dictionary, TKey key, Func3 valueFactory, TArg arg) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](IServiceProvider provider) at MyService.Consumerd__3.MoveNext() in ..\MyService \Consumers.cs:line

谁能解释一下我该如何解决依赖关系?

编辑

要注入依赖项,我使用Microsoft.Extensions.DependencyInjection.ServiceCollection

_groupServiceProvider = new ServiceCollection()                
             .AddAutoMapper(typeof(AutoMapperProfile)) 
             .AddSingleton<IMyService, MyService>()                
             .AddSingleton<IHostingEnvironment, HostingEnvironment>()
             //..
            .BuildServiceProvider();
Run Code Online (Sandbox Code Playgroud)