2016-05-20 7 views
0

クラウドサービスワーカーロールをAzureにデプロイするときは、常にさまざまな接続文字列とアプリケーション設定/構成設定をcscfgファイルを介して設定し、必要に応じてAzure Webインターフェイス経由で設定します実行時に変更しても問題ありません。Azure config - 接続文字列またはアプリケーション設定なし

接続文字列やアプリ設定/設定の設定ではないconfigsについても同様のことが可能ですか?

具体的に私は、次のようなものを持っている:

<log4net> 
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 
     <bufferSize value="1" /> 
     <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 


     <!-- This is the connection string I would like to store in Azure --> 
     <connectionString value="Server=tcp:azure.sql.server,1433;Database=MyAzureSqlDbName;User [email protected];Password=my-password;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Application Name=log4net" /> 


     <commandText value="INSERT INTO [MyLogTableName] ([Date], [etc]) VALUES (@log_date, etc)" /> 
     <parameter> 
     <parameterName value="@log_date" /> 
     <dbType value="DateTime" /> 
     <layout type="log4net.Layout.RawTimeStampLayout" /> 
     </parameter> 
    </appender> 
</log4net> 

は私の他の設定などのcscfgファイルやAzureのにその接続文字列を置く方法はありますか?私が配備するときにapp.configで手動で変更し続けるのは苦痛です。私は毎回4分5分かかります。

これらの設定は私のワーカーロールアプリのapp.configファイルに保存されているため、変換は使用できません。変換はweb.configファイルでのみ有効です。

答えて

0

cscfgファイルは単に名前と値のペアであり、必要なパラメータ(具体的には、アプリの再デプロイメントなしに設定/変更できるようにする)を設定するためのものです。

さらに重要:外部に公開される設定ファイルは、.cscfgです。同じ方法で別の設定ファイルに任意にアクセスすることはできません。 cscfgの変更に基づいて、自分で設定ファイルを変更する必要があります。また、起動時にどこかの場所(例:ストレージBLOB)から設定ファイルをダウンロードすることもできます。これにより、設定を変更したり、BLOBストレージにプッシュしたり、アプリに新しい設定をダウンロード/使用させることができます(新しい設定で再初期化するように役割インスタンスに通知するためのトリガーメカニズムを用意するだけです)。

+0

感謝デビッド。面白いと思いますが、app.configファイルをストレージBLOBに格納することについて聞いたことはありませんが、更新されたconfigがストレージBLOBに格納されている場合は、すべてを再デプロイするよりも素早く再初期化する必要があります。 Plusは私に必要なもの、つまり環境ごとに異なる設定(dev/uatなど)を与えてくれます。手動で設定を変更することを忘れる必要はありません。私は同様に検索するつもりですが、どのように私はそれを設定するつもりにどのようなポインターですか? –

1

私は、実行時にappenderの設定を変更するのが最も簡単な方法だと思います。 global.asax.cs Application_Startメソッドにロジックを追加する場合は、CloudConfigurationManagerを使用して接続文字列を変更し、cscfgまたはapp.configから接続文字列を引き出すことができます。

手順は、次のようになります。

  1. 接続文字列を保持するためにはapp.configでのAppSettingを追加し、ローカル
  2. を実行するときは、使用したいあなたのAppSettingと同じ名前で、あなたのcscfgに設定を追加
  3. :あなたはすでにそれ
  4. があなたのglobal.asax.csに次のコードのApplication_Startを追加使用していない場合は紺碧のDB接続文字列
  5. を保持することがMicrosoft.WindowsAzure.ConfigurationManager nugetパッケージをインストール10

保護された空のApplication_Start(){

var hier = (Hierarchy)LogManager.GetRepository(); 
if (hier != null) 
{ 
    var appenders = hier.GetAppenders().OfType<AdoNetAppender>(); 
    foreach (var appender in appenders) 
    { 
     appender.ConnectionString = 
      CloudConfigurationManager.GetSetting(connectionStringKey); 
     appender.ActivateOptions(); 
    } 
} 

}あなたのため

二役立つリンク:

4 Tips for using Log4NET's ADONetAppender in ASP.NET

Changing Log4net Connection String at Runtime

関連する問題