当前位置: 首页 > 知识库问答 >
问题:

在中使用IHostingEnvironment。NetCore库

杜起运
2023-03-14

构建了一个ASP。NET核心应用程序,我创建了一个用于单元测试的.NET核心类库。

我想在我的库中使用IHostingEnvironment(获取文件的物理路径),因此我在启动时添加了这一行。我的ASP。NET核心应用程序:

services.AddSingleton<IHostingEnvironment>();

在库中,我添加了对我的ASP.NET应用程序的引用,在我的类中,我写了这个:

private IHostingEnvironment _env;
public Class1(IHostingEnvironment env)
{
    _env = env;
}

但是当我运行它时,它会给我这个错误:

以下构造函数参数没有匹配的设备日期:IHostingEnvironment env

有什么问题?如何在.NET核心类库中使用它?

编辑:我也尝试使用这个:

IServiceCollection services = new ServiceCollection();
services.AddSingleton<IHostingEnvironment>();
IServiceProvider provider = services.BuildServiceProvider();
IHostingEnvironment service = provider.GetService<IHostingEnvironment>();
var p = service.WebRootPath; 

最后一个给我这个错误:

无法实例化服务类型“Microsoft.AspNetCore.Hosting.IHostingEnvironment”的实现类型“Microsoft.AspNetCore.Hosting.IHostingEnvironment”

共有3个答案

呼延英奕
2023-03-14

这在.net核心类库和控制台应用程序中都对我有用:

使用引用,

using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Hosting.Internal;

添加DI注册,

services.AddSingleton<IHostingEnvironment, HostingEnvironment>();
丌官承
2023-03-14

对于我的 .net 类库,我所要做的就是为版本 2.1.0 安装以下 nuget 包:

Microsoft.AspNetCore.Hosting.Abstractions

https://www.nuget.org/packages/Microsoft.AspNetCore.Hosting.Abstractions/

然后我只是将IHostingEnvironment注入到我的构造函数中。

我甚至不需要修改Startup.cs

商飞航
2023-03-14

注意:<code>services.AddSingleton

由于您无法创建接口的实例,因此会出现此错误。

定义要创建的类(实现< code>IHostingEnvironment),例如:

services.AddSingleton<IHostingEnvironment>(new HostingEnvironment());

WebHostBuilder 中,构造函数中的第一行是:

this._hostingEnvironment = (IHostingEnvironment) new HostingEnvironment();

此托管环境稍后由Webhost构建器填充更多设置。

您应该查看他们的github页面或反编译源代码:https://github.com/aspnet/Hosting

注意:HostingEnvironment的大多数属性/设置都是在WebHostBuilderBuild()方法上设置的。如果您想自己进行moq/测试,则应自己设置这些属性,或者只是在测试中包含WebHostBuilder

 类似资料:
  • 主要内容:面向读者,前提条件.NET Core是Microsoft最新的通用开发平台。它可以在不同的平台上工作,并且已经被重新设计,使.NET变得快速,灵活和现代。 .NET核心恰好是微软的主要贡献之一。 开发人员现在可以使用.NET构建Android,iOS,Linux,Mac和Windows应用程序,全部使用开放源代码。 面向读者 本教程是为希望了解.NET Core基础知识的软件程序员设计的。 前提条件 要求读者应该对

  • 尝试此获取无效字符串格式问题。谁能帮我一下。

  • 由于我在.netcore方面的知识非常有限,如果有人能给我指明正确的方向,我将不胜感激。

  • 我试图确定.NET核心应用程序是否容易受到XML外部实体(XXE)注入攻击。我读了这个OWASP XXE预防备忘单,它告诉我,例如,在4.5.2之前的.NET Framework版本中,

  • 我有一个控制台应用程序,将使用DI提供配置(选项模式),日志记录和其他服务引用的应用程序内的服务。 我有一个问题,日志记录正在为Info/Warning/Error/Critical工作,但调试和跟踪没有显示。我已将控制台级别设置为跟踪。如果我只是创建一个记录器工厂,那么所有日志都会显示出来。 听起来像是在使用默认值。对于在DI服务集合中创建的记录器,是否有其他方法来配置日志级别? 我试着在服务集

  • 通过postman从API到数据库的post请求给了我以下响应:{“message”:“无效的对象名‘Accounts’。”} 这些是我的C#代码,我不知道我做错了什么或我错过了什么。请帮助。 > 帐户控制器。 使用AutoMapper;使用Microsoft。AspNetCore。Http;使用Microsoft。AspNetCore。Mvc;使用系统;使用系统。集合。通用;使用非洲生物医学测试