Condividi tramite


Configurare gli ambienti di gestione temporanea in Servizio app di Azure

Nota

A partire dal 1° giugno 2024, le app appena create servizio app possono generare un nome host predefinito univoco che usa la convenzione <app-name>-<random-hash>.<region>.azurewebsites.netdi denominazione . I nomi delle app esistenti rimangono invariati. Ad esempio:

myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Per altre informazioni, vedere Nome host predefinito univoco per servizio app risorsa.

Quando si distribuisce l'app Web, l'app Web in Linux, il back-end per dispositivi mobili o l'app per le API nel servizio app Azure, è possibile usare uno slot di distribuzione separato anziché lo slot di produzione predefinito. Questo approccio è disponibile se si esegue nel livello di piano Standard, Premium o Isolato servizio app. Gli slot di distribuzione sono app live con i rispettivi nomi host. Il contenuto dell'app e gli elementi di configurazione possono essere scambiati tra due slot di distribuzione, incluso lo slot di produzione.

La distribuzione dell'applicazione in uno slot non di produzione presenta i seguenti vantaggi:

  • È possibile convalidare le modifiche dell'app in uno slot di distribuzione di staging prima di scambiarla con lo slot di produzione.
  • La distribuzione di un'app in uno slot e lo scambio in produzione assicura che tutte le istanze dello slot vengano riscaldate prima di scambiarla in produzione. Questo approccio elimina i tempi di inattività quando si distribuisce l'app. Il reindirizzamento del traffico è facile. Nessuna richiesta viene eliminata a causa di operazioni di scambio. È possibile automatizzare l'intero flusso di lavoro tramite la configurazione dello scambio automatico quando non è necessaria la convalida preliminare.
  • Dopo uno scambio, lo slot con l'app gestita temporaneamente include l'app di produzione precedente. Se le modifiche scambiate nello slot di produzione non sono come previsto, è possibile eseguire lo stesso scambio immediatamente per ottenere l'ultimo sito valido noto.

Ogni piano del servizio app supporta un numero diverso di slot di distribuzione. Non sono previsti costi aggiuntivi per l'uso degli slot di distribuzione. Per conoscere il numero di slot supportati dal piano dell'app, vedere Limiti relativi a Servizio app di Azure.

Per ridimensionare l'app passando a un livello diverso, assicurarsi che il livello di destinazione supporti il numero di slot già usato dall'app. Ad esempio, se l'app ha più di cinque slot, non è possibile passare al livello Standard . Il livello Standard supporta solo cinque slot di distribuzione.

Questo video illustra come configurare gli ambienti di gestione temporanea nel servizio app di Azure.

I passaggi del video sono descritti anche nelle sezioni seguenti.

Prerequisiti

Aggiungi uno slot

Per poter abilitare più slot di distribuzione, l'app deve essere in esecuzione con il piano Standard, Premium o Isolato.

  1. Nel portale di Azure andare alla pagina di gestione dell'app.

  2. Nel riquadro sinistro selezionare Slot>di distribuzione>Aggiungi.

    Nota

    Se l'app non è già inclusa nel livello Standard, Premium o Isolato , selezionare Aggiorna. Passare alla scheda Ridimensiona dell'app prima di continuare.

  3. Nella finestra di dialogo Aggiungi uno slot assegnare un nome allo slot e selezionare se clonare una configurazione dell'app da un altro slot di distribuzione. Selezionare Aggiungi per proseguire.

    Screenshot che mostra come configurare un nuovo slot di distribuzione denominato

    È possibile clonare una configurazione da uno slot esistente. Le impostazioni che possono essere clonate includono le impostazioni dell'app, le stringhe di connessione, le versioni di framework del linguaggio, i Web Socket, la versione HTTP e il numero di bit della piattaforma.

    Nota

    Attualmente, un endpoint privato non viene clonato tra gli slot.

  4. Dopo aver immesso le impostazioni, selezionare Chiudi per chiudere la finestra di dialogo. Il nuovo slot è ora visualizzato nella pagina Slot di distribuzione. Per impostazione predefinita, l'opzione % traffico è impostata su 0 per il nuovo slot, con tutto il traffico dei clienti instradato verso lo slot di produzione.

  5. Selezionare il nuovo slot di distribuzione per aprire la pagina delle risorse di tale slot.

    Screenshot che mostra come aprire la pagina di gestione dello slot di distribuzione nel portale.

    Lo slot di staging ha una pagina di gestione come qualsiasi altra app del servizio app. È possibile modificare la configurazione dello slot. Per ricordare che si sta visualizzando lo slot di distribuzione, il nome dell'app viene visualizzato come nome-app>/<nome-slot>.< Il tipo di app è servizio app (slot).The app type is servizio app (Slot). È anche possibile visualizzare lo slot come app separata nel gruppo di risorse, con le stesse designazioni.

  6. Selezionare l'URL dell'app nella pagina della risorsa dello slot. Lo slot di distribuzione ha un nome host specifico ed è inoltre un'app attiva. Per limitare l'accesso pubblico allo slot di distribuzione, vedere Restrizioni IP statico del Servizio app di Azure.

Il nuovo slot di distribuzione non ha contenuto, anche se si clonano le impostazioni da un altro slot. È ad esempio possibile pubblicare in questo slot con Git. È possibile distribuire lo slot da un ramo diverso del repository o da un repository diverso. L'ottenimento del profilo di pubblicazione dal Servizio app di Azure può fornire informazioni necessarie per la distribuzione nello slot. Visual Studio può importare il profilo per distribuire il contenuto nello slot.

L'URL dello slot ha il formato http://sitename-slotname.azurewebsites.net. Per mantenere la lunghezza dell'URL entro i limiti DNS necessari, il nome del sito viene troncato a 40 caratteri. Il nome del sito combinato e il nome dello slot devono essere inferiori a 59 caratteri.

Cosa accade durante uno scambio

Passaggi dell'operazione di scambio

Quando si scambiano due slot, servizio app esegue le operazioni seguenti per assicurarsi che lo slot di destinazione non verifichi tempi di inattività:

  1. Applicare le impostazioni seguenti dallo slot di destinazione (ad esempio, lo slot di produzione) a tutte le istanze dello slot di origine:

    Quando una delle impostazioni viene applicata allo slot di origine, la modifica attiva il riavvio di tutte le istanze nello slot di origine. Durante lo scambio con l'anteprima, questa azione contrassegna la fine della prima fase. L'operazione di scambio viene sospesa. È possibile verificare che lo slot di origine funzioni correttamente con le impostazioni dello slot di destinazione.

  2. Attendere il completamento del riavvio di ogni istanza nello slot di origine. Se un'istanza non viene riavviata, l'operazione di scambio ripristina tutte le modifiche apportate allo slot di origine e arresta l'operazione.

  3. Se la cache locale è abilitata, attivare l'inizializzazione della cache locale effettuando una richiesta HTTP alla radice dell'applicazione ("/") in ogni istanza dello slot di origine. Attendere che ogni istanza restituisca una risposta HTTP. L'inizializzazione della cache locale causa un altro riavvio in ogni istanza.

  4. Se lo scambio automatico è abilitato con riscaldamento personalizzato, attivare l'avvio dell'applicazione personalizzato in ogni istanza dello slot di origine.

    Se applicationInitialization non viene specificato, attivare una richiesta HTTP alla radice dell'applicazione dello slot di origine in ogni istanza.

    Se un'istanza restituisce una risposta HTTP, viene considerata come riscaldata.

  5. Se il riscaldamento di tutte le istanze nello slot di origine viene eseguito correttamente, eseguire lo scambio dei due slot scambiando le rispettive regole di gestione. Dopo questo passaggio, lo slot di destinazione (ad esempio, lo slot di produzione) ha l'app precedentemente riscaldata nello slot di origine.

  6. Ora che lo slot di origine ha l'app di pre-scambio che in precedenza era nello slot di destinazione, eseguire la stessa operazione applicando tutte le impostazioni e riavviando le istanze.

In qualsiasi momento dell'operazione di scambio, tutto il processo di inizializzazione delle app scambiate avviene nello slot di origine. Lo slot di destinazione rimane online mentre lo slot di origine viene preparato e riscaldato, indipendentemente dal fatto che lo scambio abbia esito positivo o negativo. Per scambiare uno slot di staging con lo slot di produzione, assicurarsi che lo slot di produzione sia sempre lo slot di destinazione. In questo modo, l'operazione di scambio non influisce sull'app di produzione.

Nota

Le istanze di produzione precedenti vengono scambiate in staging dopo questa operazione di scambio. Tali istanze vengono riciclate nell'ultimo passaggio del processo di scambio. Se nell'applicazione sono presenti operazioni a esecuzione prolungata, queste vengono abbandonate quando i lavoratori vengono riciclati. Questo fatto si applica anche alle app per le funzioni. Pertanto, il codice dell'applicazione deve essere scritto in modo a tolleranza di errore.

Impostazioni incluse nello scambio

Quando si clona la configurazione da un altro slot di distribuzione, la configurazione clonata è modificabile. Alcuni elementi di configurazione seguono il contenuto in uno scambio (non specifico dello slot). Altri elementi di configurazione rimangono nello stesso slot dopo uno scambio (specifico dello slot). Negli elenchi seguenti sono riportate le impostazioni che vengono modificate durante lo scambio degli slot.

Impostazioni che vengono scambiate:

  • Stack di linguaggio e versione, 32/64 bit
  • Impostazioni dell'app (possono essere configurate per essere associate a uno slot)
  • Stringhe di connessione (possono essere configurate per essere associate a uno slot)
  • Account di archiviazione montati (possono essere configurati per essere collegati a uno slot)
  • Mapping del gestore
  • Certificati pubblici
  • Contenuto dei processi Web
  • Connessioni ibride *
  • Endpoint servizio *
  • Rete di distribuzione di contenuti di Azure *
  • Mapping dei percorsi

Le funzionalità contrassegnate con un asterisco (*) sono pianificate per l'annullamento dello scambio.

Impostazioni che non vengono scambiate:

  • Impostazioni generali non indicate in Impostazioni scambiate
  • Endpoint di pubblicazione
  • Nomi di dominio personalizzati
  • Certificati non pubblici e impostazioni TLS/SSL
  • Impostazioni di ridimensionamento
  • Utilità di pianificazione processi Web
  • Restrizioni IP
  • Funzionamento continuo
  • Impostazioni di diagnostica
  • Condivisione di risorse tra le origini (CORS)
  • Integrazione della rete virtuale
  • Identità gestite e impostazioni correlate
  • Impostazioni che terminano con il suffisso _EXTENSION_VERSION
  • Impostazioni create da Connettore di servizi

Nota

Per rendere scambiabili le impostazioni, aggiungere l'impostazione WEBSITE_OVERRIDE_PRESERVE_DEFAULT_STICKY_SLOT_SETTINGS dell'app in ogni slot dell'app e specificare 0 o false come valore. Queste impostazioni sono tutte scambiabili oppure non lo sono, non è possibile renderne scambiabili solo alcune. Le identità gestite non vengono mai scambiate. Questa impostazione dell'app di override non influisce su di esse.

Anche alcune impostazioni dell'app applicabili alle impostazioni non scambiate non vengono scambiate. Ad esempio, poiché le impostazioni di diagnostica non vengono scambiate, le impostazioni dell'app correlate come WEBSITE_HTTPLOGGING_RETENTION_DAYS e DIAGNOSTICS_AZUREBLOBRETENTIONDAYS non vengono scambiate, anche se non vengono visualizzate come impostazioni dello slot.

Per configurare un'impostazione dell'app o stringa di connessione per mantenere uno slot specifico, che non viene scambiato, passare alla pagina Impostazioni>variabile di ambiente per tale slot. Aggiungere o modificare un'impostazione e quindi selezionare Impostazione slot di distribuzione. Se si seleziona questa opzione, servizio app indica che l'impostazione non è scambiabile.

Screenshot che mostra come configurare un'impostazione dell'app come impostazione dello slot nel portale di Azure.

Scambiare due slot

È possibile scambiare gli slot di distribuzione nella pagina Slot di distribuzione e Panoramica dell'app. Per altre informazioni sullo scambio di slot, vedere Cosa accade durante lo scambio.

Importante

Prima di scambiare un'app da uno slot di distribuzione nell'ambiente di produzione, assicurarsi che l'ambiente di produzione sia lo slot di destinazione e che tutte le impostazioni nello slot di origine siano configurate esattamente come si vogliono avere nell'ambiente di produzione.

Per scambiare gli slot di distribuzione:

  1. Passare alla pagina Slot di distribuzione dell'app e selezionare Scambia.

    Screenshot che mostra come avviare un'operazione di scambio nel portale.

    La finestra di dialogo Scambia mostra le impostazioni negli slot di origine e di destinazione selezionati da modificare.

  2. Selezionare gli slot desiderati in Origine e Destinazione. In genere lo slot di destinazione è lo slot di produzione. Selezionare anche le schede Modifiche dell'origine e Modifiche della destinazione e verificare che le modifiche di configurazione siano quelle previste. Al termine, è possibile scambiare immediatamente gli slot selezionando Scambia.

    Screenshot che mostra come configurare e completare uno scambio nel portale.

    Per verificare il funzionamento dello slot di destinazione con le nuove impostazioni prima di eseguire effettivamente lo scambio, non selezionare Scambia, ma seguire le istruzioni in Scambio con anteprima.

  3. Al termine, selezionare Chiudi per chiudere la finestra di dialogo.

In caso di problemi, vedere Risolvere i problemi relativi agli scambi.

Scambio con anteprima (scambio in più fasi)

Prima di passare all'ambiente di produzione come slot di destinazione, verificare che l'app venga eseguita con le impostazioni scambiate. Anche lo slot di origine viene riscaldato prima del completamento dello scambio, operazione consigliabile per le applicazioni cruciali.

Quando si esegue uno scambio con anteprima, il Servizio app di Azure esegue la stessa operazione di scambio, ma viene sospesa dopo il primo passaggio. Questo consente di verificare il risultato nello slot di staging prima di completare lo scambio.

Se si annulla lo scambio, il servizio app riapplica gli elementi di configurazione allo slot di origine.

Nota

Nella versione di anteprima non è possibile usare la funzionalità di scambio quando per uno degli slot è abilitata l'autenticazione del sito.

Per eseguire lo scambio con anteprima:

  1. Seguire i passaggi descritti in Scambiare gli slot di distribuzione, ma selezionare Esegui scambio con anteprima.

    La finestra di dialogo illustra come cambia la configurazione nello slot di origine nella fase 1 e come cambiano gli slot di origine e di destinazione nella fase 2.

  2. Quando si è pronti per avviare lo scambio, selezionare Avvia scambio.

    Al termine della fase 1, la finestra di dialogo invia una notifica. Visualizzare in anteprima lo scambio nello slot di origine passando a https://<app_name>-<source-slot-name>.azurewebsites.net.

  3. Quando si è pronti per completare lo scambio in sospeso, selezionare Completa scambio in Azione di scambio e selezionare Completa scambio.

    Screenshot che mostra come configurare uno scambio con anteprima nel portale.

    Per annullare uno scambio in sospeso, selezionare Annulla scambio e quindi selezionare Annulla scambio nella parte inferiore.

  4. Al termine, selezionare Chiudi per chiudere la finestra di dialogo.

In caso di problemi, vedere Risolvere i problemi relativi agli scambi.

Eseguire il rollback di uno scambio

Se si verificano errori nello slot di destinazione (ad esempio, lo slot di produzione) dopo uno scambio di slot, ripristinare gli slot allo stato precedente scambiandoli immediatamente.

Configurare lo scambio automatico

Nota

Lo scambio automatico non è supportato nelle app Web in Linux e app Web per contenitori.

Lo scambio automatico semplifica gli scenari di Azure DevOps nei quali si vuole distribuire l'app in modo continuativo senza avvio a freddo e senza tempi di inattività per i clienti dell'app. Con lo scambio automatico è abilitato da uno slot in produzione ogni volta che si esegue il push delle modifiche di codice in tale slot, il Servizio app scambia automaticamente l'app in produzione dopo il riscaldamento nello slot di origine.

Nota

Prima di configurare lo scambio automatico per lo slot di produzione, valutare la possibilità di testare lo scambio automatico su uno slot di destinazione non di produzione.

Per configurare lo scambio automatico:

  1. Andare alla pagina delle risorse dell'app. Selezionare Slot<>di distribuzione>per lo slot> di origine desiderato.

  2. Nel riquadro sinistro selezionare Impostazioni>Configurazione>generale.

  3. Per Scambio automatico abilitatoselezionare On. Selezionare quindi lo slot di destinazione desiderato per Scambio automatico slot di distribuzione e selezionare Salva sulla barra dei comandi.

    Screenshot che mostra come configurare lo scambio automatico nello slot di produzione nel portale.

  4. Eseguire un push di codice nello slot di origine. Lo scambio automatico avviene dopo un breve periodo di tempo. L'aggiornamento si riflette nell'URL dello slot di destinazione.

In caso di problemi, vedere Risolvere i problemi relativi agli scambi.

Specificare il riscaldamento personalizzato

Alcune app potrebbero richiedere azioni preliminari personalizzate prima dello scambio. L'elemento applicationInitialization di configurazione in web.config consente di specificare azioni di inizializzazione personalizzate. L'operazione di scambio attende il completamento del riscaldamento personalizzato prima dello scambio con lo slot di destinazione. Ecco un frammento web.config di esempio.

<system.webServer>
    <applicationInitialization>
        <add initializationPage="/" hostName="[app hostname]" />
        <add initializationPage="/Home/About" hostName="[app hostname]" />
    </applicationInitialization>
</system.webServer>

Per altre informazioni sulla personalizzazione dell'elemento applicationInitialization, vedere Errori di scambio di slot di distribuzione più comuni e come risolverli.

È anche possibile personalizzare il comportamento di riscaldamento con le impostazioni dell'app seguenti:

  • WEBSITE_SWAP_WARMUP_PING_PATH: percorso di ping su HTTP per il riscaldamento del sito. Aggiungere questa impostazione dell'app specificando un percorso personalizzato che inizi con una barra come valore. Un esempio è /statuscheck. Il valore predefinito è /.
  • WEBSITE_SWAP_WARMUP_PING_STATUSES: codici di risposta HTTP validi per l'operazione di preparazione. Aggiungere questa impostazione dell'app con un elenco di codici HTTP separati da virgole. Un esempio è 200,202. Se il codice di stato restituito non è presente nell'elenco, l'operazione preliminare di preparazione e l'operazione di scambio vengono arrestate. Per impostazione predefinita, sono validi tutti i codici di risposta.
  • WEBSITE_WARMUP_PATH: percorso relativo nel sito di cui deve essere eseguito il ping ogni volta che il sito viene riavviato (non solo durante gli scambi di slot). I valori di esempio includono /statuscheck o il percorso radice, /.

Nota

L'elemento <applicationInitialization> di configurazione fa parte di ogni avvio dell'app, mentre le impostazioni dell'app di riscaldamento si applicano solo agli scambi di slot.

In caso di problemi, vedere Risolvere i problemi relativi agli scambi.

Monitorare uno scambio

Se l'operazione di scambio richiede molto tempo per il completamento, è possibile ottenere informazioni sull'operazione di scambio nel log attività.

Nella pagina delle risorse dell'app nel portale selezionare Log attività nel riquadro a sinistra.

Un'operazione di scambio è riportata nella query di log come Swap Web App Slots. È possibile espandere la voce e selezionare una sotto-operazione o un errore per visualizzare i dettagli.

Indirizzare automaticamente il traffico di produzione

Per impostazione predefinita, tutte le richieste client all'URL di produzione dell'app (http://<app_name>.azurewebsites.net) vengono indirizzate allo slot di produzione. È possibile instradare una parte del traffico a un altro slot. Questa funzionalità è utile se è necessario il feedback degli utenti su un nuovo aggiornamento, ma non si è ancora pronti per rilasciarlo in produzione.

Per indirizzare automaticamente il traffico di produzione:

  1. Passare alla pagina delle risorse dell'app Web e selezionare Slot di distribuzione.

  2. Nella colonna % traffico dello slot a cui si vuole eseguire il routing specificare una percentuale compresa tra 0 e 100 che rappresenti la quantità di traffico totale da instradare. Seleziona Salva.

    Screenshot che mostra come instradare una percentuale di traffico della richiesta a uno slot di distribuzione nel portale.

Dopo aver salvato l'impostazione, la percentuale specificata di client viene indirizzata in modo casuale allo slot non di produzione.

Dopo che un client viene indirizzato automaticamente a uno slot specifico, viene aggiunto a tale slot per un'ora o fino a quando i cookie non vengono eliminati. Nel browser client è possibile visualizzare lo slot a cui è associata la sessione esaminando il cookie x-ms-routing-name nelle intestazioni HTTP. Una richiesta indirizzata allo slot di staging ha il cookie x-ms-routing-name=staging. Per una richiesta indirizzata allo slot di produzione il cookie è x-ms-routing-name=self.

Indirizzare automaticamente il traffico di produzione

Oltre al routing automatico del traffico, il servizio app può eseguire il routing delle richieste a uno slot specifico. Questa opzione è utile quando vuoi che gli utenti possano acconsentire esplicitamente o rifiutare esplicitamente l'app beta. Per indirizzare manualmente il traffico di produzione, si usa il parametro di query x-ms-routing-name.

Ad esempio, per consentire agli utenti di rifiutare esplicitamente l'app beta, è possibile inserire nella pagina Web questo collegamento:

<a href="<webappname>.azurewebsites.net/?x-ms-routing-name=self">Go back to production app</a>

La stringa x-ms-routing-name=self specifica lo slot di produzione. Dopo che il browser client avrà eseguito l’accesso al collegamento, verrà reindirizzato allo slot di produzione. Ogni richiesta successiva sarà associata al cookie x-ms-routing-name=self, che aggiungerà la sessione allo slot di produzione.

Per permettere agli utenti di acconsentire esplicitamente all'app beta, impostare lo stesso parametro di query sul nome dello slot non di produzione. Ecco un esempio:

<webappname>.azurewebsites.net/?x-ms-routing-name=staging

Per impostazione predefinita, ai nuovi slot viene assegnata una regola di gestione di 0%, visualizzata in grigio. Quando si imposta questo valore in modo esplicito su 0% (visualizzato in testo nero), gli utenti possono accedere manualmente allo slot di staging usando il parametro di query x-ms-routing-name. Non verranno indirizzati automaticamente allo slot perché la percentuale di routing è impostata su 0. Questa configurazione è uno scenario avanzato in cui è possibile nascondere lo slot di staging dal pubblico, consentendo ai team interni di testare le modifiche nello slot.

Eliminare uno slot

Cercare e selezionare l'app. Selezionare Slot di distribuzione>per<>eliminare>>Panoramica. Il tipo di app viene visualizzato come Servizio app di Azure (Slot) per ricordare che si sta visualizzando uno slot di distribuzione. Prima di eliminare uno slot, assicurarsi di arrestare lo slot e impostare il traffico nello slot su zero. Selezionare Elimina nella barra dei comandi.

Screenshot che mostra come eliminare uno slot di distribuzione nel portale.

Automatizzare con i modelli di Resource Manager

I modelli di Azure Resource Manager sono file JSON dichiarativi usati per automatizzare la distribuzione e la configurazione delle risorse di Azure. Per scambiare gli slot usando i modelli di Resource Manager, impostare due proprietà nelle risorse Microsoft.Web/sites/slots e Microsoft.Web/sites:

  • buildVersion: proprietà stringa che rappresenta la versione corrente dell'app distribuita nello slot. Ad esempio: v1, 1.0.0.1 o 2019-09-20T11:53:25.2887393-07:00.
  • targetBuildVersion: proprietà stringa che specifica quale buildVersion deve essere lo slot. Se l'oggetto targetBuildVersion non è uguale all'oggetto corrente buildVersion, attiva l'operazione di scambio trovando lo slot con l'oggetto specificato buildVersion.

Esempio di modello di Resource Manager

Il modello di Resource Manager seguente scambia due slot aggiornando lo buildVersionstaging slot e impostando nello targetBuildVersion slot di produzione. È necessario disporre di uno slot denominato staging.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "my_site_name": {
            "defaultValue": "SwapAPIDemo",
            "type": "String"
        },
        "sites_buildVersion": {
            "defaultValue": "v1",
            "type": "String"
        }
    },
    "resources": [
        {
            "type": "Microsoft.Web/sites/slots",
            "apiVersion": "2018-02-01",
            "name": "[concat(parameters('my_site_name'), '/staging')]",
            "location": "East US",
            "kind": "app",
            "properties": {
                "buildVersion": "[parameters('sites_buildVersion')]"
            }
        },
        {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2018-02-01",
            "name": "[parameters('my_site_name')]",
            "location": "East US",
            "kind": "app",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites/slots', parameters('my_site_name'), 'staging')]"
            ],
            "properties": {
                "targetBuildVersion": "[parameters('sites_buildVersion')]"
            }
        }        
    ]
}

Questo modello di Resource Manager è idempotente. È possibile eseguirlo ripetutamente e produrre lo stesso stato degli slot. Senza alcuna modifica al modello, le esecuzioni successive dello stesso modello non attivano alcun scambio di slot perché gli slot sono già nello stato desiderato.

Risolvere i problemi relativi agli scambi

Se si verifica un errore durante uno scambio di slot, l'errore viene visualizzato in D:\home\LogFiles\eventlog.xml. Viene anche registrato nel log degli errori specifico dell'applicazione.

Ecco alcuni errori comuni di scambio:

  • Viene eseguita una richiesta HTTP alla radice dell'applicazione. L'operazione di scambio attende 90 secondi per ogni richiesta HTTP e riprova fino a cinque volte. Se si verifica il timeout di tutti i tentativi, l'operazione di scambio viene arrestata.

  • L'inizializzazione della cache locale potrebbe non riuscire quando il contenuto dell'app supera la quota del disco locale specificata per la cache locale. Per altre informazioni, vedere Panoramica della cache locale.

  • Durante un'operazione di aggiornamento del sito, è possibile che si verifichi l'errore seguente Lo slot non può essere modificato perché le impostazioni di configurazione sono state preparate per lo scambio. Questo errore può verificarsi se lo scambio con anteprima (scambio a più fasi) fase 1 termina ma la fase 2 non è ancora stata eseguita. Può verificarsi anche se uno scambio non è riuscito. Esistono due modi per risolvere questo problema:

    • Annullare l'operazione di scambio che ripristina lo stato precedente del sito
    • Completare l'operazione di scambio che aggiorna il sito allo stato nuovo desiderato

    Per informazioni su come annullare o completare l'operazione di scambio, vedere Scambiare con l'anteprima (scambio in più fasi).

  • Durante il riscaldamento personalizzato, le richieste HTTP vengono effettuate internamente senza passare attraverso l'URL esterno. Possono avere esito negativo con determinate regole di riscrittura URL in Web.config. Ad esempio, le regole per il reindirizzamento dei nomi di dominio o l'applicazione di HTTPS possono impedire che le richieste di riscaldamento raggiungano il codice dell'app. Per risolvere questo problema, modificare le regole di riscrittura aggiungendo le due condizioni seguenti:

    <conditions>
      <add input="{WARMUP_REQUEST}" pattern="1" negate="true" />
      <add input="{REMOTE_ADDR}" pattern="^100?\." negate="true" />
      ...
    </conditions>
    
  • Senza un riscaldamento personalizzato, le regole di riscrittura URL possono comunque bloccare le richieste HTTP. Per risolvere questo problema, modificare le regole di riscrittura aggiungendo la condizione seguente:

    <conditions>
      <add input="{REMOTE_ADDR}" pattern="^100?\." negate="true" />
      ...
    </conditions>
    
  • Dopo gli scambi di slot, l'app potrebbe riscontrare riavvii imprevisti. I riavvii si verificano perché dopo uno scambio, la configurazione dell'associazione nome host non viene sincronizzata. Questa situazione da sola non causa riavvii. Tuttavia, alcuni eventi di archiviazione sottostanti, ad esempio i failover del volume di archiviazione, potrebbero rilevare queste discrepanze e forzare il riavvio di tutti i processi di lavoro. Per ridurre al minimo questi tipi di riavvii, impostare l'WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG=1impostazione dell'app su tutti gli slot. Tuttavia, questa impostazione dell'app non funziona con le app windows Communication Foundation (WCF).

Passaggio successivo