首页 > 解决方案 > 尝试激活“MediatR.ServiceFactory”时无法解析“System.Object”类型的服务

问题描述

我有一个正在尝试升级到 3.0 的 Asp.net Core 2.2 应用程序。我正在使用 Mediatr,现在升级到 3.0 后出现此错误

验证服务描述符“ServiceType:System.ICloneable Lifetime:Transient ImplementationType:MediatR.ServiceFactory”时出错:尝试激活“MediatR.ServiceFactory”时无法解析“System.Object”类型的服务。

这是我在 Startup.cs 中的代码

services.AddMediatR(typeof(BlogPost));

我正在使用 Scrutor 进行扫描IMediator

services.Scan(scan => scan
          .FromAssembliesOf(typeof(ISettingService), typeof(IMediator), typeof(BlogPost), typeof(IHomeHelper))
          .AddClasses()
          .UsingRegistrationStrategy(RegistrationStrategy.Skip) 
          .AsImplementedInterfaces()
          .WithScopedLifetime());

上面的代码在 2.2 中工作,但现在由于错误,我什至无法启动程序。有人可以解释一下出了什么问题吗?

标签: asp.net-corestartupasp.net-core-3.0mediatr

解决方案


禁用验证范围。

// Program.cs
public static IWebHost BuildWebHost(string[] args) =>
 WebHost.CreateDefaultBuilder(args)
 .UseStartup<Startup>()
 .UseDefaultServiceProvider(options => options.ValidateScopes = false) // <<<<<<<<<<<
 .Build();

推荐阅读