Pregunta

¿Cómo puedo fiabilidad detectar si mi solicitud Azure se ejecuta en tela de desarrollo y no en 'la nube'?

RoleEnvironment.IsAvailable es cierto para ambos. Quiero algo que es cierto sólo en un caso.

Lo pregunto porque quiero que los usuarios de mi biblioteca para poder utilizar mi biblioteca de forma gratuita en dev tela. Por lo tanto, poner manualmente identificador o indicador aparte en el archivo de configuración y mantenimiento de dos configuraciones para implementar dev y no es factible.

¿Fue útil?

Solución

Una opción es echar un vistazo a RoleEnvironment.DeploymentId - si se está ejecutando en el tejido dev, debe tener un nombre como 'despliegue (n)', donde n es un número secuencial. Si se está utilizando en la producción, el identificador de despliegue debe ser similar a un GUID.

Otra cosa que puedes hacer es mirar a nombre de la instancia de un papel. En la producción, se debe terminar en _0 (representando ejemplo 0). En el tejido dev, que va a terminar en .0

EDITAR 08/01/2013 - se dio cuenta de esta respuesta que he dado más de 2 años atrás es bastante anticuado! Ahora también hay RoleEnvironment.IsEmulated - echa un vistazo a los detalles aquí .

Otros consejos

El Windows Azure 1.5 SDK introdujo el RoleEnvironment.IsEmulated propiedad bool estático 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 se puede pasar a las tareas de inicio también. Hay un gran artículo de Steve Marx aquí acerca de eso.

Por ejemplo:

La tela desarrollo no totalmente simular 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 dentro del controlador de eventos RoleEnvironment.StatusCheck para indicar que la instancia de rol debe ser sacado de la rotación del equilibrador de carga, usted todavía será capaz de acceder a su función de su navegador, mientras que su estado es RoleInstanceStatus.Busy.

También tela azul normalmente se ejecuta bajo una de las pocas imágenes fijas OS . Así también se puede investigar System.Environment. para algunos patrones que se producen sólo en azul de tela (es decir, específica versión del sistema operativo correspondiente a Windows Azure sistema operativo o algo así).

Hay una técnica muy simple que he estado usando durante un tiempo - y me encuentro utilizando con frecuencia. El truco consiste en establecer una variable de entorno en su máquina dev y el uso de archivos básico lotes de DOS (o PowerShell) técnicas, saltar por encima de las cosas que no desea recibir si esa variable está presente. Esta variable de entorno no estará presente en la nube.

Me escribió en su blog sobre él aquí: Azure FAQ: ¿Puedo crear un Grupo de inicio que se ejecuta sólo cuando realmente en la nube

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top