我有一个 .NET Core 解决方案,其中包含一个针对 .NET Core 2.1 的 API 项目,我将其升级到 .NET Core 3.1。我已经意识到这样做有许多重大变化,我已经经历了这些变化并对其进行了修改以使其兼容(例如转换UseMvc
为UseRouting
等)。但现在我被困在一个:
当我尝试运行 API 项目时,出现以下运行时错误:
无法构造某些服务(验证服务描述符“ServiceType:Microsoft.Extensions.FileProviders.IFileProvider Lifetime:Singleton ImplementationType:Microsoft.Extensions.FileProviders.PhysicalFileProvider”时出错:没有“Microsoft.Extensions.FileProviders”类型的构造函数。 PhysicalFileProvider' 可以使用服务容器中的服务和默认值来实例化。)
在 Startup.cs 的 ConfigureServices 中,有:
services.AddSingleton<IFileProvider, PhysicalFileProvider>();
这当然是问题所在。但我不确定如何将其转换为既兼容又让 API 以原来的方式工作。
我确实找到了一篇关于文件提供程序的文章,其中指出:
FileProviderSample 示例应用使用 IHostEnvironment.ContentRootFileProvider 在 Startup.ConfigureServices 方法中创建提供程序:
var physicalProvider = _env.ContentRootFileProvider;
但目前尚不清楚 ConfigureServices 中应该去的确切位置......或者它是否取代了AddSingleton
......或者这将如何影响 API 的行为。所以我不知道该怎么办。