0

Azure App Service을 사용하고 있습니다. 내가 의 ConfigurationManager를 사용하여 이러한 설정에 액세스 할 수 없습니다 Web.config의Azure App Service 설정은 ConfigurationManager를 통해 사용할 수 없습니다.

에서 값을 대체하기>앱 설정연결 문자열 - 나는 섹션 응용 프로그램 설정에을 여러 매개 변수를 추가하려합니다. 내 프로젝트는 .Net 4.6을 기반으로합니다.

Environment.GetEnvironmentVariable("name")을 사용하여이 앱 설정 및 연결 문자열에 액세스 할 수 있습니다. 나는 기사와 천국을 많이 읽어

에만 섹션 환경 변수에서 섹션의 appSettings는과 연결 문자열에 //.scm.azurewebsites.net/Env.cshtml :

또한 이러한 설정 페이지에 https에 표시되지 않습니다 대답을 찾지 못했습니다.
디자인에 의한 것입니까, 아니면 제가 잘못하고있는 것입니까? 웹 양식 응용 프로그램과 작동하지만, 내 프로젝트는하지 않는다하여이 OWIN을 포함 - 1

업데이트 I 2015 업데이트 3은 VS에서 테스트 프로젝트를 만들었습니다.

업데이트 2 내 문제를 잘못 설명한 것처럼 보입니다. ConfigurationManager가 작동하고 web.config에서 설정에 액세스 할 수 있지만 Azure에 배포 한 후에 Azure App 서비스 -> 응용 프로그램 설정 -> 응용 프로그램 설정 및 연결 문자열에 입력 한 값으로 값이 대체 될 것으로 예상됩니다. 그러나 그것은 일어나지 않습니다.

내 Web.config의 :

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 

<appSettings> 
    <add key="APPINSIGHTS_INSTRUMENTATIONKEY" value="dummy" /> 
</appSettings> 

<connectionStrings> 
    <add name="default" providerName="System.Data.SqlClient" connectionString="empty" /> 
    <add name="ApolloTI" providerName="System.Data.SqlClient" connectionString="empty" /> 
    <add name="TestData" providerName="System.Data.SqlClient" connectionString="empty" /> 
</connectionStrings> 
    ... 
</configuration> 

Screenshot - Setting in Azure

업데이트 3 난 그냥 빈 웹 프로젝트를 생성하고 그렇게, 작동 문제가 내 코드 또는 프로젝트에 어딘가에처럼 보인다 구성.

+0

이 정확히 어떻게 구성 관리자를 사용하고 있습니까? 포털의 코드 설정, 예상 동작, 실제 동작 및 스크린 샷을 앱 설정에서 포함합니다. – astaykov

+0

내 게시물이 업데이트되었습니다. 세부 정보를 추가했습니다. –

답변

0

Environment.GetEnvironmentVariable ("name")을 사용하여 이러한 앱 설정 및 연결 문자열에 액세스 할 수 있습니다. 또한 이러한 설정은 섹션 환경 변수

지금까지 내가 아는 한, 쿠두의 환경 페이지는 기본 appSettings는과 연결 문자열을 보여줍니다

에, 섹션 appSettings는과 연결 문자열 페이지 https://.scm.azurewebsites.net/Env.cshtml에 표시되지 않습니다. webconfig의 appsettings 및 포털에서 설정 한 appsettings가 포함되지 않습니다.

article에 따르면, 당신은 다음 정보가 제공됩니다 :

응용 프로그램은 .NET 앱의 을 설정 이러한 설정은 기존 설정을 무시 런타임에 사용자의 .NET 구성 appSettings는 주입된다. 연결 문자열 각 응용 프로그램 설정에 대해 두 개의 환경 변수가 만들어집니다. 하나는 앱 설정 항목에서 지정한 이름으로, 다른 하나는 APPSETTING_ 접두사가 붙은 이름입니다. 둘 다 동일한 값을 포함합니다.

.NET 응용 프로그램의 경우 이러한 연결 문자열은 런타임시 .NET 구성 connectionStrings 설정에 삽입되어 키가 연결된 데이터베이스 이름과 동일한 기존 항목을 무시합니다. 이러한 설정은 런타임에 환경 변수로 사용할 수 있으며 접두어는 연결 유형입니다.
사용자 정의 SQLAZURECONNSTR_ : 예를 들어

사용자 정의 연결 문자열이 레디 스라는 이름 있다면 CUSTOMCONNSTR_는, 그것은 것

SQL 서버 : SQLCONNSTR_
MySQL은 : MYSQLCONNSTR_
SQL 데이터베이스는 다음과 같이 환경 변수 접두사는 환경 변수 CUSTOMCONNSTR_Redis를 통해 액세스 할 수 있습니다.

그래서 appsettings 및 connectionstring을 환경 변수에서 찾을 수 있습니다.

그리고이 값은 응용 프로그램이 실행 중일 때 webconfig 값을 대체합니다.

또한 컴퓨터에서 ConfigurationManager 클래스를 사용하여 테스트 데모를 작성하면 올바르게 작동합니다.

그래서 코드에 문제가있는 것 같습니다. 여기

은 당신에게 몇 가지 팁을 제공합니다 희망, 내 테스트 데모입니다 :

public void ReadAllSettings() 
{ 
    string o = ""; 
    try 
    { 
     var appSettings = ConfigurationManager.AppSettings; 

     if (appSettings.Count == 0) 
     { 
      o = "AppSettings is empty."; 
     } 
     else 
     { 
      foreach (var key in appSettings.AllKeys) 
      { 
       o += string.Format("Key: {0} Value: {1}", key, appSettings[key]); 
      } 
     } 
    } 
    catch (ConfigurationErrorsException) 
    { 
     o = "AppSettings is empty."; 
    } 

    Label1.Text = o; 
    Label2.Text = ConfigurationManager.ConnectionStrings["ConnStringDb2"].ConnectionString; 
} 

결과 : enter image description here

+0

답장을 보내 주셔서 감사합니다. 방금 테스트 프로젝트를 만들었지 만 작동하지만 모든 새 프로젝트에는 OWIN이 포함되어 있지만 프로젝트에 포함 된 것은 OWIN에 의존하지 않습니다. 어쩌면 모든 마술을 가치 사상으로 만듭니다. –

+0

no. 그것은 OWIN과 아무 관련이 없습니다. 절대적으로 아무것도. "실패한"프로젝트가 .NET Core 기반 또는 "일반".NET입니까? – astaykov

+0

내 프로젝트는 "일반".NET이지만 일반적인 웹 응용 프로그램은 아닙니다. 수 시간 동안 조사한 후에 프로젝트 구성에 문제가 있다고 생각합니다. 행운이없이 이틀을 보냈기 때문에 그대로 두어야합니다. GetEnvironmentVariable을 사용하여 해결 방법을 구현했습니다. –