2016-11-29 12 views
0

WebアプリケーションをAzureにデプロイするときに、特定のWebアプリケーションのポータルでこれらを設定することで接続文字列とアプリ設定を上書きできます展開中です。ポータルからweb.configの他の部分を上書きできる方法はありますか?私は、ファイルのappSettingセクションにないweb.configの接続文字列を必要とするUmbraco CMS用のプラグインを使用しています。 (彼らは通常、別のファイルでそれらを保持しますが、私はうまくいけばポータルからそれらを設定することができますweb.configに配置)WebアプリケーションをAzureにデプロイするときにappSettingsとconnectionStringではなくweb.configの他の部分をオーバーライドする

ここでは、私が参照しているセクション:

<configuration> 
    ...A lot of other web.config stuff 
    <imageProcessor> 
    <caching currentCache="AzureBlobCache"> 
     <caches> 
     <cache name="AzureBlobCache" type="ImageProcessor.Web.Plugins.AzureBlobCache.AzureBlobCache, ImageProcessor.Web.Plugins.AzureBlobCache" maxDays="365"> 
      <settings> 
      <!--Azure Cache Provider--> 
      <setting key="CachedStorageAccount" value="Azure blob storage key" /> 
      <setting key="CachedBlobContainer" value="cache" /> 
      <setting key="UseCachedContainerInUrl" value="false" /> 
      <setting key="CachedCDNRoot" value="Azure storage account" /> 
      <setting key="CachedCDNTimeout" value="1000" /> 
      <setting key="SourceStorageAccount" value="name=Azure storage account" /> 
      <setting key="SourceBlobContainer" value="media" /> 
      <setting key="StreamCachedImage" value="false" /> 
      </settings> 
     </cache> 
     </caches> 
    </caching> 
    </imageProcessor> 
</configuration> 

上記のキャッシュセクションに設定キーを設定します。 AzureポータルappSettingsセクションのこのセクションを直接参照することができない場合、これらの設定をweb.configのappSettingsセクションにキーとして設定し、web.configファイルのこのセクションから参照できますか?

これを実現するためにweb.configトランスフォームを使用することができますが、これでもweb.config.releaseなどのソースコントロールに接続文字列をチェックする必要があります。

私が望むタスクを実行するために見落としている解決策がありますか? (ソリューションはVSTSでホストされているので、そこに設定キーを追加して別のビルドステップを追加することもできます)。そのようにすれば、ソース管理ではなくビルド構成に結びつくでしょう。

+0

AzureのWebアプリケーションは、それを行うことはできません。表示されているものは上書きすることしかできません。 – juunas

+0

キャッシュ設定の注意をappSettingsセクションに戻すことができますか? –

+0

そのimageProcessorコンポーネントがサポートしている場合のみ。特定のライブラリでは、値の代わりにアプリ設定キーを指定できます。 – juunas

答えて

0

PowerShell Scriptをビルド定義の手順の1つとして追加できます。 インラインスクリプトオプションを使用する場合は、このスクリプトをレポに含める必要はありません。

スクリプトはこのように見えます(私はあなたの例で述べたように正しいXPathを追加しました)。

$path = ".\web.config" 
$xml = [xml](Get-Content $path) 

$dictionary = @{ 
    CachedCDNTimeout = '9000'  
} 

foreach ($key in $dictionary.Keys) 
{  
    if (($addKey = $xml.SelectSingleNode("//configuration/imageProcessor/caching/caches/cache/settings/setting[@key = '$key']"))) 
    {   
     $addKey.SetAttribute('value', $dictionary[$key]) 
    } 
} 

$xml.Save($path) 

(私はローカルでのみ、それをテストしてみた)

関連する問題