首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ConfigureServices中获取开发/暂存/生产托管环境

如何在ConfigureServices中获取开发/暂存/生产托管环境
EN

Stack Overflow用户
提问于 2015-09-13 18:56:10
回答 12查看 138.6K关注 0票数 273

如何在启动中获取ConfigureServices方法中的开发/暂存/生产托管环境?

代码语言:javascript
复制
public void ConfigureServices(IServiceCollection services)
{
    // Which environment are we running under?
}

ConfigureServices方法只接受一个IServiceCollection参数。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2015-09-14 09:49:52

你可以很容易地在ConfigureServices中访问它,只需在启动方法中将它持久化到一个属性中,该方法首先被调用并传入,然后你就可以从ConfigureServices访问该属性了。

代码语言:javascript
复制
public Startup(IWebHostEnvironment env, IApplicationEnvironment appEnv)
{
    ...your code here...
    CurrentEnvironment = env;
}

private IWebHostEnvironment CurrentEnvironment{ get; set; } 
 
public void ConfigureServices(IServiceCollection services)
{
    string envName = CurrentEnvironment.EnvironmentName;
    ... your code here...
}
票数 333
EN

Stack Overflow用户

发布于 2019-04-11 03:34:19

如果您需要在不能轻松访问IHostingEnvironment的代码库中的某个位置进行测试,另一个简单的方法如下所示:

代码语言:javascript
复制
bool isDevelopment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Development";
票数 46
EN

Stack Overflow用户

发布于 2017-10-04 02:59:39

在MVC MVC app / Microsoft.AspNetCore.All v2.0.0中,你可以使用@vaindil描述的特定于环境的启动类,但我不喜欢这种方法。

您还可以将IHostingEnvironment注入到StartUp构造函数中。您不需要将环境变量存储在Program类中。

代码语言:javascript
复制
public class Startup
{
    private readonly IHostingEnvironment _currentEnvironment;
    public IConfiguration Configuration { get; private set; }

    public Startup(IConfiguration configuration, IHostingEnvironment env)
    {
        _currentEnvironment = env;
        Configuration = configuration;
    }

    public void ConfigureServices(IServiceCollection services)
    {
        ......

        services.AddMvc(config =>
        {
            // Requiring authenticated users on the site globally
            var policy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .Build();
            config.Filters.Add(new AuthorizeFilter(policy));

            // Validate anti-forgery token globally
            config.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());

            // If it's Production, enable HTTPS
            if (_currentEnvironment.IsProduction())      // <------
            {
                config.Filters.Add(new RequireHttpsAttribute());
            }            
        });

        ......
    }
}
票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32548948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档