Pourquoi IIS accepte-t-il les demandes avant que RoleEntryPoint.OnStart ne retourne?

Je joue avec l’exemple Azure sur Compute Emulator et j’ai constaté que si je rends OnStart() dans ma classe héritée de RoleEntryPoint plutôt lentement, la page .aspx du rôle Web accepte les requêtes HTTP avant le OnStart() .

Je trouve cela plutôt déroutant – pourquoi IIS accepterait-il les demandes pour le rôle qui n’a pas encore commencé?

L’émulateur n’émule pas l’équilibreur de charge à 100%. Pour le cloud, lorsque votre rôle est dans OnStart (), vous êtes signalé au LB comme étant occupé et aucun trafic ne lui sera acheminé. Une fois que vous revenez de OnStart () avec la valeur true, cela prendra quelques secondes, mais le LB commencera alors à y accéder. Vous pouvez le tester vous-même en traçant votre OnStart () et en y mettant un gros Sleep (). Vous ne pourrez pas accéder à votre instance (sur des ports non persistants).

Vous pouvez bien sûr demander au LB d’ignorer le statut Ready et il acheminera même lorsqu’il est occupé – cela se fait en spécifiant ignoreRoleInstanceStatus = “true” sur le noeud final.