2010-05-26 12 views
15

¿Cómo puedo verificar con fiabilidad si mi aplicación Azure se está ejecutando en una estructura de desarrollo y no en "la nube"?¿Cómo detectar esa aplicación azul que se ejecuta en el tejido de desarrollo?

RoleEnvironment.IsDisponible es cierto para ambos. Quiero algo que sea verdad en un solo caso.

Pregunto esto porque quiero que los usuarios de mi biblioteca puedan usar mi biblioteca de forma gratuita en Dev Fabric. Por lo tanto, poner manualmente un identificador o indicador separado en el archivo de configuración y mantener dos configuraciones para dev y deploy no es factible.

Respuesta

20

Una opción es echar un vistazo a RoleEnvironment.DeploymentId - si está ejecutando en el tejido dev, debe tener un nombre como 'deployment (n)' donde n es un número secuencial. Si está ejecutando en producción, el ID de implementación debe parecerse a un Guid.

Otra cosa que puede hacer es mirar el nombre de instancia de una función. En producción, debe terminar en _0 (representando la instancia 0). En el tejido dev, terminará en .0

EDIT 1/8/2013 - me di cuenta de que esta respuesta que di hace más de 2 años es bastante obsoleta. Ahora también hay - verifique los detalles here.

+1

+1 para actualizar su respuesta – Tom

3

Por ejemplo:

La tela desarrollo no simula totalmente el comportamiento del equilibrador de carga de Windows Azure. Por ejemplo, si el código que se ejecuta en una instancia de rol web llama al método SetBusy desde el controlador de eventos RoleEnvironment.StatusCheck para indicar que la instancia de rol se debe quitar de la rotación del equilibrador de carga, aún podrá acceder a su rol desde su navegador mientras su estado es RoleInstanceStatus.Busy.

También la tela azul normalmente se ejecuta en one of the few fixed OS Images. Por lo tanto, también puede investigar System.Environment. para algunos patrones que ocurren solo en el tejido azul (es decir, la versión del sistema operativo específica que se corresponde con el sistema operativo Windows Azure o algo así).

1

Hay una técnica muy simple que he estado usando por un tiempo, y me encuentro usándola con frecuencia. El truco consiste en establecer una variable de entorno en su máquina de desarrollo y utilizar técnicas básicas de archivo por lotes de DOS (o PowerShell), saltar sobre las cosas que no desea si esa variable está presente. Esta variable de entorno no estará presente en la nube.

blogged sobre él aquí: Azure FAQ: Can I create a Startup Task that executes only when really in the Cloud?

16

El Windows Azure SDK 1.5 introdujo la propiedad static bool RoleEnvironment.IsEmulated para determinar a partir de código si la instancia de rol se está ejecutando en el emulador de Windows Azure Compute. Esta información también se puede pasar a las tareas de inicio. Hay un gran artículo de Steve Marx sobre el tema here.

+1

No es confiable, ya que solo se basa en la Variable de entorno y para alguien que quiera saltear la licencia basada en esta comprobación debería poder configurar fácilmente esta variable y, por lo tanto, IsEmulated devolvería true . –

Cuestiones relacionadas