codememo

ASP에서 환경 변수를 읽습니다.NET 코어

tipmemo 2023. 5. 3. 21:27
반응형

ASP에서 환경 변수를 읽습니다.NET 코어

내 ASP를 실행하고 있습니다.NET Core 애플리케이션은 DNX를 사용하여 명령줄에서 환경 변수를 설정한 다음 다음과 같이 실행할 수 있었습니다.

set ASPNET_ENV = Production
dnx web

1.0에서 동일한 접근 방식 사용:

set ASPNETCORE_ENVIRONMENT = Production
dotnet run

작동하지 않습니다. 응용 프로그램이 환경 변수를 읽을 수 없는 것 같습니다.

Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"));

null을 반환합니다.

제가 무엇을 빠뜨리고 있나요?

당신의 문제는 주변의 공간입니다.=.

이렇게 하면 효과가 있습니다(따옴표를 닫기 전에 공간에 주의).

Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT "));

이후 공간ASPNETCORE_ENVIRONMENT이 코드는 오타가 아닙니다!문제의 문제는 (SET...에) 추가 공간이 있는 것이므로 GetEnvironmentVariable()에서 동일한 공간을 사용해야 합니다.

Isantipov가 논평에서 언급한 것처럼, 훨씬 더 나은 해결책은 SET 명령에서 공간을 완전히 제거하는 것입니다.

set ASPNETCORE_ENVIRONMENT=Production

이것은 @Dmitry의 이 답변에 대한 의견이어야 합니다(그러나 너무 길어서 별도의 답변으로 게시합니다).

사용하고 싶지 않을 것입니다.'ASPNETCORE_ENVIRONMENT '(후행 공백 포함) - ASP에 피쳐가 있습니다.가치에 따라 달라지는 NET Core'ASPNETCORE_ENVIRONMENT'(후행 공백 없음) - 예: 해결appsettings.Development.jsonappsettings.Production.json(예: 여러 환경 관련 문서 문서 참조)

그리고 여러분이 순수하게 ASP 안에 머무르길 원하신다면요.사용하고자 하는 NET Core 패러다임IHostingEnvironment.Environment(설명서 참조) 읽기 대신 속성Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")직접적으로(물론 전자는 후자에서 설정되지만).예: Startup.cs 에서

public class Startup
{
    //<...>

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        Console.WriteLine("HostingEnvironmentName: '{0}'", env.EnvironmentName);
        //<...>
    }

    //<...>
}

개발 중 런타임에 환경 변수를 생성하면 매번 null이 됩니다.VS는 시작 시에만 EV를 읽기 때문에 비주얼 스튜디오를 다시 시작해야 합니다.

언급URL : https://stackoverflow.com/questions/37387235/read-environment-variables-in-asp-net-core

반응형