Domanda

Come posso affidabilità rilevare se la mia domanda Azure è in esecuzione in tessuto di sviluppo e non in 'nuvola'?

RoleEnvironment.IsAvailable è vero per entrambi. Voglio qualcosa che è vero solo in un caso.

Sto chiedendo questo perché voglio utenti della mia libreria di essere in grado di usare la mia libreria gratuitamente in dev tessuto. Quindi mettere manualmente identificatore o bandierina separata nel file di configurazione e mantenendo due configurazioni per dev e distribuzione non è fattibile.

È stato utile?

Soluzione

Una possibilità è quella di dare un'occhiata a RoleEnvironment.DeploymentId - se si sta eseguendo nel tessuto dev, dovrebbe avere un nome come 'distribuzione (n)' dove n è un numero sequenziale. Se si sta eseguendo in produzione, l'id distribuzione dovrebbe assomigliare ad un Guid.

Un'altra cosa che puoi fare è guardare nome di istanza di un ruolo. Nella produzione, si deve terminare _0 (che rappresenta esempio 0). Nel tessuto dev, finirà in .0

Modifica 2013/1/8 - ha realizzato questa risposta che ho dato oltre 2 anni fa è abbastanza obsoleto! Ora c'è anche RoleEnvironment.IsEmulated - Scopri i dettagli qui .

Altri suggerimenti

Il Windows Azure SDK 1.5 ha introdotto il RoleEnvironment.IsEmulated bool proprietà statica per determinare dal codice se l'istanza ruolo è in esecuzione in calcolo emulatore di Windows Azure. Queste informazioni possono essere passati alle attività di avvio troppo. V'è un grande articolo di Steve Marx qui di questo.

Ad esempio:

  

Il tessuto di sviluppo non simulare completamente il comportamento del bilanciamento del carico di Windows Azure. Per esempio, se il codice in esecuzione in un'istanza di ruolo Web chiama il metodo SetBusy all'interno del gestore di eventi RoleEnvironment.StatusCheck per indicare che l'istanza ruolo dovrebbe essere escluso dalla rotazione del bilanciamento del carico, si sarà ancora in grado di accedere al tuo ruolo dal vostro browser mentre il suo stato è RoleInstanceStatus.Busy.

Tessuto Anche azzurro viene eseguito normalmente sotto uno dei pochi sistemi operativi Immagini fisse . Così si può anche indagare System.Environment. per alcuni modelli che si verificano solo in azzurro tessuto (cioè specifica versione del sistema operativo di corrispondenza per Windows Azure OS o qualcosa di simile).

C'è una tecnica molto semplice ho utilizzato per un po '- e mi ritrovo ad usarlo spesso. Il trucco è quello di impostare una variabile d'ambiente sulla vostra macchina dev e l'utilizzo di file di base batch di DOS (o PowerShell) tecniche, saltare la roba non si vuole se tale variabile è presente. Questa variabile di ambiente non sarà presente nella nube.

ho bloggato su di esso qui: Azure FAQ:? Posso creare una task di avvio che viene eseguito solo quando realmente nel Cloud

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top