从ASP.NET Core 1 RC1 IConfiguration访问环境变量

捕捞

我正在研究如何正确处理环境变量以及在多个环境中配置我的应用程序。我选择从Development中config.json读取,并在Production中使用环境变量。

我有以下Startup.cs来证明这一点:

using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Http;
using Microsoft.Extensions.Configuration;

namespace Variables
{
    public class Startup
    {
        private IConfiguration mConfiguration;

        public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder();
            if (env.IsDevelopment())
            {
                // Only load from config when in development.
                builder.AddJsonFile("config.json");
            }
            builder.AddEnvironmentVariables();
            mConfiguration = builder.Build();
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            app.UseIISPlatformHandler();
            app.UseDeveloperExceptionPage();

            app.Run(async (context) =>
            {
                // Succeeds with hosting:environment=Development, fails with hosting:environment=Production
                // ArgumentNullException: Value cannot be null. Parameter name: text
                //  Environment variable setup in Windows with:
                //  set bar=1
                await context.Response.WriteAsync(mConfiguration["bar"]);
            });
        }

        public static void Main(string[] args) => WebApplication.Run<Startup>(args);
    }
}

我的config.json很简单:

{
  "bar": 1
}

当以方式运行时,此操作成功hosting:environment=Development但是,当以方式运行时,此操作将失败hosting:environment=Production我在Windows中使用设置了环境变量set bar=1

我也尝试过利用系统环境变量(因为我不确定是否打开命令提示符并键入set bar=1用户环境变量或系统变量),但是在运行我的应用程序时也会失败,并出现相同的错误。

肖恩·卢丁(Shaun Luttin)

在我的机器上工作

通过config.json使用{ "bar": 1 }和使用此代码...

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder();
    if (env.IsDevelopment())
    {
        builder.AddJsonFile("config.json");
    }

    builder.AddEnvironmentVariables();
    mConfiguration = builder.Build();
}

public IConfigurationRoot mConfiguration { get; set; }

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.Run(async (context) =>
    {
        await context.Response.WriteAsync(env.EnvironmentName);
        await context.Response.WriteAsync($"\r\n");

        await context.Response.WriteAsync(mConfiguration["bar"]);
        await context.Response.WriteAsync($"\r\n");
    });
}

    public static void Main(string[] args) => 
        Microsoft.AspNet.Hosting.WebApplication.Run<Startup>(args);
}

...运行以下命令...

CMD> dnvm use 1.0.0-rc1-update2
CMD> set bar=3
CMD> dnx web

...在网络浏览器中显示。

火狐浏览器结果

故障排除

视觉工作室

如果您使用的是Visual Studio,请在更改环境变量后重新启动它。或者,通过Visual Studio定义环境变量,这样就不必重新启动。

  1. 右键单击“项目”>“属性”
  2. 除错
  3. 环境变量
  4. 添加
  5. 保存全部

Visual Studio环境变量

重新启动您的外壳。dnx web仅获取其外壳中可用的环境变量。如果您在其他位置定义了环境变量之后打开了外壳程序,那么您将需要重新启动外壳程序。

检查您的外壳程序(PowerShell,命令提示符或bash)是否知道环境变量:

PS> $env:bar          
CMD> SET bar          
$ printenv bar      

如果您的外壳不知道环境变量,请按以下方式进行设置:

PS> $env:bar = 3
CMD> SET bar=3
$ export bar=3

两个都

转储您的应用程序知道的所有环境变量:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.Run(async (context) =>
    {
        foreach (var envVar in mConfiguration.GetChildren())
        {
            await context.Response.WriteAsync($"{envVar.Key}: {envVar.Value}");
            await context.Response.WriteAsync($"\r\n");
        }
    });
}

检查您的应用程序是否正在生产中运行:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.Run(async (context) =>
    {
        await context.Response.WriteAsync(env.EnvironmentName);
        await context.Response.WriteAsync($"\r\n");
    });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从ASP.NET Core 1 RC1 IConfiguration访问环境变量

来自分类Dev

ASP.NET Core社交登录RC1

来自分类Dev

使用vnext(ASP.NET 5 RC1 Update1)在Mac中设置托管环境变量

来自分类Dev

将Asp.Net Core RC1迁移到RC2后的问题

来自分类Dev

如何在Asp.Net Core MVC 1.0(aka MVC 6 RC1)中访问会话超时值?

来自分类Dev

如何在Asp.net Core rc1中的静态方法中使用DI

来自分类Dev

IIS永远启动Asp.Net Core RC1应用程序

来自分类Dev

ASP.Net Core RC1:System.ArgumentException:路径中的非法字符

来自分类Dev

ASP.NET Core RC1到1.0.0的迁移错误

来自分类Dev

.NET Core v1版本是否与ASP.NET CORE RC1兼容?

来自分类Dev

如何在Asp.net Core MVC(又名Asp.Net 5 RC1)中检查响应cookie?

来自分类Dev

Microsoft Asp.Net 5 RC1

来自分类Dev

如何使用ASP.NET Core RC1中的Facebook提供程序获取其他字段?

来自分类Dev

Microsoft.AspNet.Session在ASP.NET Core 1.0 rc1 update2中不可用

来自分类Dev

Asp.Net 5(核心)RC1:如何记录到文件(滚动文件记录)[DNX Core 5兼容解决方案]?

来自分类Dev

使用ASP MVC Core RC1和ASPNET_ENV

来自分类Dev

使用ASP MVC Core RC1和ASPNET_ENV

来自分类Dev

ASP.NET 5 RC1项目差异

来自分类Dev

动态编译在ASP.NET 5 RC1中仍然不起作用?

来自分类Dev

ASP.NET 5 RC1:System.IO.InvalidDataException:请求内容的意外结束

来自分类Dev

Azure ASP.NET RC1部署失败

来自分类Dev

ASP.NET 5 RC1项目差异

来自分类Dev

视图中的ASP.Net 5 rc1本地化

来自分类Dev

ASP.NET 5 RC1身份验证方法

来自分类Dev

在IIS 8.5中部署ASP.NET RC1 WebApp

来自分类Dev

使用ASP .NET 5 RC1监视更改并重新加载Kestrel

来自分类Dev

带有ASP.net v5 RC1的Autofac

来自分类Dev

如何在ASP.NET 5 RC1 MVC中使用IFormFile保存上传的文件

来自分类Dev

类型“异常”是在ASP.NET 5 RC1中未引用的程序集中定义的

Related 相关文章

  1. 1

    从ASP.NET Core 1 RC1 IConfiguration访问环境变量

  2. 2

    ASP.NET Core社交登录RC1

  3. 3

    使用vnext(ASP.NET 5 RC1 Update1)在Mac中设置托管环境变量

  4. 4

    将Asp.Net Core RC1迁移到RC2后的问题

  5. 5

    如何在Asp.Net Core MVC 1.0(aka MVC 6 RC1)中访问会话超时值?

  6. 6

    如何在Asp.net Core rc1中的静态方法中使用DI

  7. 7

    IIS永远启动Asp.Net Core RC1应用程序

  8. 8

    ASP.Net Core RC1:System.ArgumentException:路径中的非法字符

  9. 9

    ASP.NET Core RC1到1.0.0的迁移错误

  10. 10

    .NET Core v1版本是否与ASP.NET CORE RC1兼容?

  11. 11

    如何在Asp.net Core MVC(又名Asp.Net 5 RC1)中检查响应cookie?

  12. 12

    Microsoft Asp.Net 5 RC1

  13. 13

    如何使用ASP.NET Core RC1中的Facebook提供程序获取其他字段?

  14. 14

    Microsoft.AspNet.Session在ASP.NET Core 1.0 rc1 update2中不可用

  15. 15

    Asp.Net 5(核心)RC1:如何记录到文件(滚动文件记录)[DNX Core 5兼容解决方案]?

  16. 16

    使用ASP MVC Core RC1和ASPNET_ENV

  17. 17

    使用ASP MVC Core RC1和ASPNET_ENV

  18. 18

    ASP.NET 5 RC1项目差异

  19. 19

    动态编译在ASP.NET 5 RC1中仍然不起作用?

  20. 20

    ASP.NET 5 RC1:System.IO.InvalidDataException:请求内容的意外结束

  21. 21

    Azure ASP.NET RC1部署失败

  22. 22

    ASP.NET 5 RC1项目差异

  23. 23

    视图中的ASP.Net 5 rc1本地化

  24. 24

    ASP.NET 5 RC1身份验证方法

  25. 25

    在IIS 8.5中部署ASP.NET RC1 WebApp

  26. 26

    使用ASP .NET 5 RC1监视更改并重新加载Kestrel

  27. 27

    带有ASP.net v5 RC1的Autofac

  28. 28

    如何在ASP.NET 5 RC1 MVC中使用IFormFile保存上传的文件

  29. 29

    类型“异常”是在ASP.NET 5 RC1中未引用的程序集中定义的

热门标签

归档