2017-09-20 3 views
0
... 
<system.web> 
    ...other nodes.. 

    <sessionState timeout="10" mode="Custom" customProvider="PROVIDER_NAME"> 
     <providers> 
     <add name="PROVIDER_NAME" type="PROVIDER_TYPE" throwOnError="true" retryTimeoutInMilliseconds="5000" databaseId="0" applicationName="AppNAME" connectionString="CONNECTION_STRING" /> 
     </providers> 
    </sessionState> 

    ..other nodes... 
    </system.web> 

web.configファイルに上記のエントリがあります。私は上記のノードでpowershellスクリプトを使って接続文字列を更新するのが好きです。変更は、他のノード/属性ではなく、接続文字列にのみ影響します。私のアプリは紺碧でホストされています。私は紺碧のアプリに接続し、下記のようにアプリの設定を更新することを知っています。web.configファイル内のsystem.webセクションのセッションストアセクションを更新するPowershellスクリプト

$app = Set-AzureRMWebApp -Name $name -ResourceGroupName $group **-AppSettings $mysettingsCollection** -- this works fine 

xpathの特定のノードを更新することについてはわかりません。可能であれば、いくつかのサンプルスクリプトを提供してください。似たような - >

$app = Set-AzureRMWebApp -Name $name -ResourceGroupName $group -**SYSTEM.WEB/SESSIONSATE VALUES** 

答えて

0

Powershellはこれを行うことはできません。これを適切に行う方法は、XDT変換によるものです。 You can read more about using XDT transforms here

App Serviceアプリケーションの場合、web.configのサブセットである設定オブジェクトがあります。アプリ設定、接続文字列、その他の一般的なセクションのようなものは、この設定オブジェクトの一部です。

このようにして、「app settings」を追加したり、web.configの項目をアプリケーションの設定に置き換えることができます。

具体的にはセッション状態ですが、これはアプリケーションの設定で持っている要素ではありません。そのため、ここではweb.configという秋にはXDT変換が必要です。

変換彼の場合XDTトンでは、のようになります。

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <system.web> 
     <sessionState timeout="10" mode="Custom" customProvider="PROVIDER_NAME"> 
      <providers> 
       <add name="PROVIDER_NAME" type="PROVIDER_TYPE" throwOnError="true" retryTimeoutInMilliseconds="5000" databaseId="0" applicationName="AppNAME" connectionString="CONNECTION_STRING" /> 
      </providers> 
     </sessionState> 
    </system.web> 
</configuration> 
+0

あなたの入力に基づいて、私はこの方法で接続文字列を保存しないことに決めました。私はC#コードで接続文字列を取得するように変更します。 –

0

他のすべての接続文字列を維持しながら、単一のAzure Web Appsの接続文字列を更新するためには、Set-AzureRmWebAppを使用して呼び出す保存中にすべての接続刺されの値を渡す必要がありコマンドレット。これを行うには、最初に既存の接続文字列の全リストを繰り返し、Hashコレクションに追加してから、特定の接続文字列値をHashコレクションに追加または設定する必要があります。

AzureのWebアプリケーション上の1つのまたは複数の接続文字列に更新を行う際に、既存の接続文字列のどれが削除されていないことを確認してください:

# Load Existing Web App settings 
 
$webApp = Get-AzureRmWebAppSlot -ResourceGroupName "MyResourceGroup" -Name "MyWebApp" -Slot production 
 

 
# Get reference to the existing Connection Strings 
 
$existingConnectionStrings = $webApp.SiteConfig.ConnectionStrings 
 

 
# Create Hash variable for Connection Strings 
 
$hash = @{} 
 

 
# Copy over all Existing Connection Strings to the Hash 
 
ForEach($connString in $existingConnectionString) { 
 
$hash[$connString.Name] = @{ Type = $connString.Type.ToString(); Value = $connString.ConnectionString } 
 
} 
 

 
# Add or Update a desired Connection String within the Hash collection 
 
$hash["AppConnString"] = @{ Type = "SqlAzure"; Value = "conn-string-here" } 
 

 
# Save Connection String to Azure Web App 
 
Set-AzureRmWebAppSlot -ResourceGroupName "MyResourceGroup" -Name "MyWebApp" -Slot production -ConnectionStrings $hash

これは重要なヒントですPowerShellコマンドレットを使用してAzure Web Appで接続文字列を追加または更新するときに覚えておく必要があります。忘れてしまった場合は、イベントでアプリケーションの他のすべての接続文字列を誤って削除して、追加または更新するよりも多くの既存の接続文字列が存在する可能性があります。生産を中断しないでください。このヒントを覚えておいてください!

詳細については、このブログの記事Easily Manage Azure Web App Connection Strings using PowerShellを参照してください。

これが役に立ちます。

+0

このコードは、しかし、設定ファイルの接続文字列セクションの接続文字列を更新します。..あなたの貴重な時間と応答のためにあなたのアショクありがとうweb.configファイルのxpath構成\ system.web \ sessionState \ providers \ add [@ name = PR OVIDER_NAME]にあるxml要素の属性(CONNECTION STRING)を更新したいとします。注:これは空白のホストMVC5.net Webアプリケーションです。あなたは助けてくれますか? –

関連する問題