0

私はAzure Appサービスを使用しています。私はのConfigurationManagerを使用して、これらの設定へのアクセスを得ることができないweb.configファイルAzure Appサービス設定はConfigurationManagerで利用できません

から値を上書きする>アプリの設定接続文字列 - 私はセクションアプリケーション設定でをいくつかのパラメータを追加しようとしています。 私のプロジェクトは.Net 4.6に基づいています。

Environment.GetEnvironmentVariable("name")を使用して、これらのアプリ設定と接続文字列にアクセスできます。

また、これらの設定は、ページのhttpsに表示されていない://.scm.azurewebsites.net/Env.cshtmlセクションのAppSettingsと接続文字列では、唯一のセクション環境変数に

私は記事や避難所をたくさん読んで答えが見つかりませんでした。
これは設計によるのですか、何か間違っていますか? Webフォームアプリケーションとそれに動作しますが、私のプロジェクトにはないことで、それは、OWINが含まれています - 1

アップデートは私が2015更新3は、VSでテストプロジェクトを作成しました。

更新2 私の問題は間違っているように見えます。 ConfigurationManagerが動作し、web.configから設定にアクセスすることができますが、Azureにデプロイした後は、Azure App Service - > Application settings - > App settingsとConnection文字列に値を代入することを期待しています。しかし、それは起こりません。

私の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 私はちょうど空のWebプロジェクトを作成し、それはそう、作品の問題は私のコードまたはプロジェクトのどこかにあるように見えます構成。

+0

をどのように正確には、Configuration Managerを使用していますか?ポータルのコード設定、予想される動作、実際の動作、およびスクリーンショットをアプリ設定から取り込みます。 – astaykov

+0

私の投稿が更新され、詳細が追加されました –

答えて

0

Environment.GetEnvironmentVariable( "name")を使用して、これらのアプリケーション設定と接続文字列にアクセスできます。 また、これらの設定は、私の知る限りでは

のみセクションの環境変数では、セクションのAppSettingsと接続文字列内のページhttps://.scm.azurewebsites.net/Env.cshtmlに表示されません、クーズーの環境ページには、デフォルトののAppSettingsと接続文字列が表示されます。 webconfigのappsettingsとポータルで設定したappsettingsは含まれません。

このarticleによると、あなたは情報です:

アプリケーションは.NETアプリケーションのために を設定、これらの設定は既存の設定を上書きし、実行時に.NET構成のAppSettingsに注入されています。 接続文字列 各アプリケーション設定に対して、2つの環境変数が作成されます。 1つはアプリ設定エントリで指定された名前を持ち、もう1つは接頭辞APPSETTING_を持つものです。両方とも同じ値を含みます。

.NETアプリケーションの場合、これらの接続文字列は、実行時に.NET構成のconnectionStrings設定に挿入され、キーがリンクされたデータベース名と等しい既存のエントリを上書きします。 これらの設定は、実行時に環境変数として使用でき、接頭辞の接頭辞が付いています。

SQL Serverの:SQLCONNSTR_
のMySQL:MYSQLCONNSTR_
SQLデータベース:SQLAZURECONNSTR_
カスタム:たとえばCUSTOMCONNSTR_

、カスタム接続文字列をRedisの命名されたならば、それは考え、次のように環境変数の接頭辞があります環境変数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

番号。それはOWINとは何の関係もありません。何もない。あなたの「失敗した」プロジェクトは.NET Coreベースか「通常の」.NETですか? – astaykov

+0

私のプロジェクトは「通常の」.NETですが、通常のWebアプリケーションはありません。数時間の調査の後、私はプロジェクト構成に問題があると思う。私は運がなければ二日間過ごしたのでそのまま残しておきます。 GetEnvironmentVariableで回避策を実装しました。 –

関連する問題