Configurare gli ambienti di gestione temporanea in Servizio app di Azure
Nota
A partire dal 1° giugno 2024, tutte le app del servizio app appena create avranno la possibilità di generare un nome host predefinito univoco usando la convenzione di denominazione <app-name>-<random-hash>.<region>.azurewebsites.net
. I nomi delle app esistenti rimarranno invariati.
Esempio: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Per altri dettagli, vedere Nome host predefinito univoco per la risorsa del Servizio app di Azure.
Quando si distribuiscono l'app Web, l'app Web su Linux, il back-end per dispositivi mobili e l'app per le API nel Servizio app di Azure, è possibile usare uno slot di distribuzione distinto anziché lo slot di produzione predefinito se il piano di servizio app in uso è Standard, Premium o Isolato. 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 gestione temporanea prima di scambiarlo con lo slot di produzione.
- La distribuzione preliminare di un'app in uno slot e la successiva implementazione in un ambiente di produzione garantiscono che tutte le istanze dello slot vengano effettivamente eseguite prima di passare alla fase di produzione. Ciò consente di evitare i tempi di inattività al momento della distribuzione dell'app. Il reindirizzamento del traffico è lineare e nessuna richiesta viene eliminata in seguito alle 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 applicate nello slot di produzione non risultano corrette, è possibile ripetere immediatamente lo scambio dei due slot per recuperare l'ultimo sito con i dati corretti.
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. Se ad esempio l'app ha più di cinque slot, non è possibile passare a un piano inferiore scegliendo Standard, perché 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
Per informazioni sulle autorizzazioni necessarie per eseguire l'operazione slot desiderata, vedere Operazioni del provider di risorse (ad esempio cercare slot).
Aggiungi uno slot
Per poter abilitare più slot di distribuzione, l'app deve essere in esecuzione con il piano Standard, Premium o Isolato.
Nel portale di Azure andare alla pagina di gestione dell'app.
Nel riquadro sinistro selezionare Slot di distribuzione>Aggiungi slot.
Nota
Se l'app non è già inclusa nel livello Standard, Premium o Isolato, selezionare Aggiorna e andare alla scheda Ridimensiona dell'app prima di proseguire.
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.
È 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.
Dopo aver aggiunto lo slot, 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.
Selezionare il nuovo slot di distribuzione per aprire la pagina delle risorse di tale slot.
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/<slot-nome>>e il tipo di app è Servizio app (Slot). È anche possibile visualizzare lo slot come app separata nel gruppo di risorse, con le stesse designazioni.
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. Il profilo può essere importato da Visual Studio 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 verrà troncato a 40 caratteri e 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 (in genere da uno slot di staging come origine nello slot di produzione come destinazione), il Servizio app di Azure esegue le operazioni seguenti per assicurarsi che lo slot di destinazione non subisca tempi di inattività:
Applicare le impostazioni seguenti dallo slot di destinazione (ad esempio, lo slot di produzione) a tutte le istanze dello slot di origine:
- Impostazioni dell'app specifiche dello slot e stringhe di connessione, se applicabile.
- Impostazioni di distribuzione continua, se abilitate.
- Impostazioni di autenticazione del Servizio app, se abilitate.
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, questo contrassegna la fine della prima fase. L'operazione di scambio viene sospesa ed è possibile verificare che lo slot di origine funzioni correttamente con le impostazioni dello slot di destinazione.
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.
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.
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.
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.
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 nelle istanze di produzione precedenti (quelle che verranno scambiate nello staging dopo questa operazione di scambio) verranno riciclate rapidamente nell'ultimo passaggio del processo di scambio. Se nell'applicazione sono presenti operazioni a esecuzione prolungata, queste verranno abbandonate quando i ruoli di lavoro vengono riciclati. Questo vale anche per le 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 della configurazione seguono il contenuto nello scambio (non specifici dello slot), mentre altri elementi della configurazione restano nello stesso slot dopo uno scambio (specifici 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 menzionate in precedenza, aggiungere l'impostazione dell'app WEBSITE_OVERRIDE_PRESERVE_DEFAULT_STICKY_SLOT_SETTINGS
in ogni slot dell'app e impostarne il valore su 0
o false
. Queste impostazioni sono tutte scambiabili oppure non lo sono, non è possibile renderne scambiabili solo alcune. Le identità gestite non vengono mai scambiate e non sono interessate da questa impostazione di override dell'app.
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 una stringa di connessione per mantenere uno slot specifico (non scambiato), passare alla pagina Configurazione per tale slot. Aggiungere o modificare un'impostazione e quindi selezionare Impostazione dello slot di distribuzione. Selezionando questa casella di controllo si indica al servizio app che l'impostazione non è scambiabile.
Scambiare due slot
È possibile scambiare gli slot di distribuzione nella pagina Slot di distribuzione e Panoramica dell'app. Per informazioni tecniche 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:
Passare alla pagina Slot di distribuzione dell'app e selezionare Scambia.
La finestra di dialogo Scambia mostra le impostazioni negli slot di origine e di destinazione selezionati che verranno modificate.
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 gli slot immediatamente selezionando Scambia.
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.
Una volta completate queste operazioni, chiudere la finestra di dialogo selezionando Chiudi.
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:
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.
Quando si è pronti per avviare lo scambio, selezionare Avvia scambio.
Al termine della fase 1, viene visualizzata una notifica nella finestra di dialogo. Visualizzare in anteprima lo scambio nello slot di origine passando a
https://<app_name>-<source-slot-name>.azurewebsites.net
.Quando si è pronti per completare lo scambio in sospeso, selezionare Completa scambio in Azione di scambio e selezionare Completa scambio.
Per annullare uno scambio in sospeso, selezionare Annulla scambio e quindi selezionare Annulla scambio nella parte inferiore.
Una volta completate queste operazioni, chiudere la finestra di dialogo selezionando Chiudi.
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:
Andare alla pagina delle risorse dell'app. Selezionare Slot di distribuzione>< lo slot origine desiderato>>Configurazione>Impostazioni generali.
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.
Eseguire un push del codice allo slot di origine. Lo scambio automatico viene eseguito dopo pochi minuti e 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 di configurazione applicationInitialization
in web.config consente di specificare le azioni di inizializzazione personalizzate. L'operazione di scambio attende il completamento del riscaldamento personalizzato prima dello scambio con lo slot di destinazione. Di seguito è riportato un frammento di 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 una o entrambe 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 di configurazione <applicationInitialization>
fa parte di ogni avvio dell'app, mentre le due impostazioni dell'app di comportamento 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:
Accedere alla pagina delle risorse dell'app e selezionare Slot di distribuzione.
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.
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. Per una richiesta indirizzata allo slot di "staging" 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. Ciò è utile quando si vuole 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
. Gli utenti, tuttavia, non verranno indirizzati automaticamente allo slot perché la percentuale di routing è impostata su 0. Si tratta di 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>lo slot da 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.
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
: si tratta di una 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
: si tratta di una proprietà stringa che specifica qualebuildVersion
deve essere lo slot. Se l'oggettotargetBuildVersion
non è uguale all'oggetto correntebuildVersion
, attiva l'operazione di scambio trovando lo slot con l'oggetto specificatobuildVersion
.
Esempio di modello di Resource Manager
Il modello di Resource Manager seguente scambia due slot aggiornando buildVersion
dello slot staging
e impostando targetBuildVersion
nello slot di produzione. Si presuppone che sia stato creato 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, ovvero può essere eseguito 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, viene registrato 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 "Non è possibile modificare lo slot perché le impostazioni di configurazione sono state preparate per lo scambio". Questo problema può verificarsi se è stato completato uno scambio con anteprima (scambio a più fasi) fase 1, ma la fase 2 non è ancora stata eseguita o 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 aggiornerà il sito al nuovo stato desiderato
Per informazioni su come annullare o completare l'operazione di scambio, vedere Scambio con anteprima (scambio a 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. Ciò è dovuto al fatto che dopo uno scambio, la configurazione dell'associazione nome host non viene sincronizzata, che di per sé non causa i riavvii. Tuttavia, alcuni eventi di archiviazione sottostanti, ad esempio i failover del volume di archiviazione, possono 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=1
impostazione dell'app su tutti gli slot. Tuttavia, questa impostazione dell'app non funziona con le app di Windows Communication Foundation (WCF).