- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何使用 IHostingEnvironment
接口(interface)而不在构造函数中启动它?
我的 Startup.cs:
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
if (env.IsDevelopment())
{
// This will push telemetry data through Application Insights pipeline faster, allowing you to view results immediately.
builder.AddApplicationInsightsSettings(developerMode: true);
}
Configuration = builder.Build();
}
public class FileReader
{
// I don't want to initiate within a constructor
public string ReadFile(string fileName)
{
// this is wrong! how can I use it?
var filename = Path.Combine(IHostingEnvironment.WebRootPath, fileName);
}
}
最佳答案
您应该使用集成的依赖注入(inject),因为它使您的代码解耦并且更容易在不破坏内容的情况下进行更改,并且使单元测试变得非常容易。
如果您将通过静态类或方法访问它,那么您的代码将变得难以测试,因为在单元测试中它将始终使用项目路径而不是某些特定的字符串进行测试。
你描述的方式绝对正确,它是不是 错误的!下面只是完整的例子。
public class FileReader
{
private readonly IHostingEnvironment env;
public FileReader(IHostingEnvironment env)
{
if(env==null)
throw new ArgumentNullException(nameof(env));
this.env = env;
}
public string ReadFile(string fileName)
{
var filename = Path.Combine(env.WebRootPath, fileName);
}
}
env
值为
null
在构造函数中,您可能需要自己在
Startup.cs
中注册它,如果 ASP.NET Core 还没有这样做:
services.AddSingleton<IHostingEnvironment>(env);
Startup
的实例构造函数。
关于.net - 如何使用 IHostingEnvironment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40946685/
如何使用 IHostingEnvironment接口(interface)而不在构造函数中启动它? 我的 Startup.cs: public Startup(IHostingEnvironment
我目前正在将项目从 .NET Core RC1 升级到新的 RTM 1.0 版本。在 RC1 中,有一个 IApplicationEnvironment,在 1.0 版本中被替换为 IHostingE
我正在尝试使用 ABP 2.0.2 中的单元测试项目,但在运行所选测试 GetUsers_Test() 时出现以下错误。 Message: Castle.MicroKernel.Handlers.Ha
在.NET Core控制台应用程序中,如果我添加以下行... IHostingEnvironment env = new HostingEnvironment(); Console.WriteLine
我们正在运行 ASP.NET Core 并热切地使用 IHostingEnvironment。 由于我们组织中的约定,我们的环境名称与默认 IHostingEnvironment 实现的环境名称不匹配
在我的 Azure Service Fabric Web API 项目中,我可以在我的 Api.cs 类中使用以下代码将我的 appsettings.json 文件添加到我的配置中: prot
默认的 ASP.NET Core web 项目在 Startup.cs 中包含这样的行: if (string.Equals(env.EnvironmentName, "Development", S
我有这个: let configureApp (app : IApplicationBuilder) = let env = app.ApplicationServices.GetServic
在 Asp.Net Core 中,如果创建了一个自定义中间件并将其放置在它自己的类中,如何访问 IHostingEnvironment从中间件内部? 例如,在我下面的类(class)中,我认为我可以注
在 asp.net core Startup.cs Configure 中,我们提供了一个 IHostingEnvironment env 参数,该参数公开一个 env.IsDevelopment()
我将 ASP.NET Core 项目更新为 .NET Core v3.0.0-preview3,现在我得到: Startup.cs(75,50,75,69): warning CS0618: 'IHo
如何手动将 IhostingEnvironment 环境设置为开发环境?我想使用 C# 代码来执行此操作,而不是命令行。 谢谢, public Startup(IHostingEnvironme
当我想为 ASP MVC Core 2 项目触发 add-migration 命令时遇到问题。 No service for type 'Microsoft.AspNetCore.Hosting.IH
我需要在 Program.cs -> Main 方法中访问 IHostingEnvironment.ContentRootPath。我遵循了互联网上的一些答案,但无济于事。 我的代码如下所示;我可以在
我正在为 .NET 核心(net46 框架)创建 xunit 测试,但在获取应用程序的根路径时遇到问题,因此我可以找到 appsettings.json 等内容。 有人可以解释我如何实现以下目标之一:
我正在尝试为我的 asp.net core 应用程序添加 NLog。所以我完全按照这里的描述配置它https://github.com/NLog/NLog.Extensions.Logging 。我还
我正在尝试为我的 asp.net core 应用程序添加 NLog。所以我完全按照这里的描述配置它https://github.com/NLog/NLog.Extensions.Logging 。我还
问题 当我尝试向代码中添加迁移时,例如:dnx ef migrations add initial, Startup(IHostingEnvironment env) 中的 env.WebRootPa
目前,Asp.Net core 2 IHostingEnvironment 具有三个 bool 属性 是生产 正在分期 是发展 如果我想创建两个额外的属性,它是否可以扩展? (例如 IsTesting
我正在尝试在升级后的 Asp.Net Core RC2 应用程序的 static void main 中获取配置值。在 Startup 的构造函数中,我可以注入(inject) IHostingEnv
我是一名优秀的程序员,十分优秀!