在我的 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, ISet1 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)
| 归档时间: |
|
| 查看次数: |
7220 次 |
| 最近记录: |