Comment détecter d'azur application est en cours d'exécution dans le tissu de développement?

StackOverflow https://stackoverflow.com/questions/2915340

  •  04-10-2019
  •  | 
  •  

Question

Comment puis-je détecter si la fiabilité mon application Azure est en cours d'exécution dans le tissu de développement et non pas dans le « nuage »?

RoleEnvironment.IsAvailable est vrai pour les deux. Je veux quelque chose qui est vrai dans un seul cas.

Je demande parce que je veux les utilisateurs de ma bibliothèque pour pouvoir utiliser ma bibliothèque gratuitement dans dev tissu. Par conséquent mettre manuellement identificateur distinct ou d'un drapeau dans le fichier de configuration et le maintien de deux configurations de déploiement et dev est impossible.

Était-ce utile?

La solution

L'une des options est de jeter un oeil à RoleEnvironment.DeploymentId - si vous utilisez dans le tissu dev, il doit avoir un nom comme « le déploiement (n) » où n est un numéro séquentiel. Si vous utilisez dans la production, l'identifiant de déploiement doit ressembler à un Guid.

Une autre chose que vous pouvez faire est de regarder le nom de l'instance d'un rôle. Dans la production, il devrait se terminer en _0 (représentant par exemple 0). Dans le tissu dev, il prendra fin en .0

EDIT 08/01/2013 - a réalisé cette réponse que j'ai donné est tout à fait obsolète il y a plus de 2 ans! Maintenant, il y a aussi RoleEnvironment.IsEmulated - vérifier les détails ici .

Autres conseils

Le Windows Azure SDK 1.5 a introduit le RoleEnvironment.IsEmulated propriété statique bool pour déterminer à partir du code si l'instance de rôle est en cours d'exécution dans l'émulateur Windows Azure Compute. Ces informations peuvent être transmises aux tâches de démarrage trop. Il y a un grand article de Steve Marx ici à ce sujet.

Par exemple:

  

Le tissu de développement ne simulent pas entièrement le comportement de l'équilibreur de charge Windows Azure. Par exemple, si le code en cours d'exécution dans une instance de rôle Web appelle la méthode SetBusy à partir du gestionnaire d'événements RoleEnvironment.StatusCheck pour indiquer que l'instance de rôle devrait être retiré de la rotation de l'équilibrage de charge, vous serez toujours en mesure d'accéder à votre rôle de votre navigateur alors que son état est RoleInstanceStatus.Busy.

Aussi tissu d'azur fonctionne normalement sous l'un des rares fixes OS Images . Ainsi, vous pouvez également enquêter sur System.Environment. pour certains modèles qui se produisent uniquement dans le tissu azur (à savoir correspondant spécifique OS version Windows Azure OS ou quelque chose comme ça).

Il y a une technique très simple, je l'ai utilisé pendant un certain temps - et je me trouve à l'utiliser fréquemment. L'astuce consiste à définir une variable d'environnement sur votre machine dev et en utilisant des techniques fichier batch DOS de base (ou PowerShell), sauter par-dessus les choses que vous ne voulez pas si cette variable est présente. Cette variable d'environnement ne sera pas présent dans le nuage.

Je blogué à ce sujet ici: Azure FAQ: Puis-je créer un démarrage de tâche qui exécute uniquement lorsque vraiment dans le Cloud

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top