- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在运行 ASP.NET Core 并热切地使用 IHostingEnvironment。
由于我们组织中的约定,我们的环境名称与默认 IHostingEnvironment 实现的环境名称不匹配。
为了解决这个问题,我们制作了以下扩展方法:
public static class HostingEnvironmentExtensions
{
public static bool IsProd(this IHostingEnvironment env) => env.IsEnvironment("prod");
public static bool IsTest(this IHostingEnvironment env) => env.IsEnvironment("test");
}
这工作正常,但感觉有点危险,因为 IsProduction
和 IsStaging
的默认方法现在无法按您期望的方式工作。
处理环境名称不同于 ASP.NET Core 默认值的正确方法是什么?
最佳答案
您可以通过创建自己的实现来解决这个问题。我创建了自己的 IWorkingEnvironment
界面,如下所示:
public interface IWorkingEnvironment
{
string EnvironmentName { get; set; }
}
还有我自己的“已知”环境名称:
public static class EnvironmentNames
{
public static readonly string Local = nameof(Local);
public static readonly string Dev = nameof(Dev);
public static readonly string Test = nameof(Test);
public static readonly string Prod = nameof(Prod);
}
后面是IWorkingEnvironment
的扩展方法:
public static class WorkingEnvironmentExtensions
{
public static bool IsLocal(this IWorkingEnvironment environment)
{
return environment.EnvironmentName == EnvironmentNames.Local;
}
public static bool IsDev(this IWorkingEnvironment environment)
{
return environment.EnvironmentName == EnvironmentNames.Dev;
}
// etc...
}
然后我使用 ASP.NET IHostingEnvironment
实现 IWorkingEnvironment
:
public class AspNetWorkingEnvironment : IWorkingEnvironment
{
private readonly IHostingEnvironment _hostingEnvironment;
public AspNetWorkingEnvironment(IHostingEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
}
public string EnvironmentName => _hostingEnvironment.EnvironmentName;
}
现在我们所要做的就是在我们的依赖注入(inject)容器中将 AspNetWorkingEnvironment
注册为 IWorkingEnvironment
的实现(使用单例生命周期):
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IWorkingEnvironment, AspNetWorkingEnvironment>();
// etc...
}
关于c# - 为 IHostingEnvironment 使用自定义名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40721007/
如何使用 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
我是一名优秀的程序员,十分优秀!