No sé si mi experiencia coincide exactamente con el escenario descrito, pero creo que puede, al menos, ser una inspiración.
En mi solución tengo cuatro servicios distintos en la nube, cada uno tiene un rol web, y todos deben saber que la URL de otros servicios funciona correctamente. Cuando estoy en producción, sé exactamente las URL de todos mis servicios y puedo referirme a cada servicio por su nombre de dominio. Pero cuando es hora de depurar esto puede ser una pesadilla porque no hay ninguna opción para enlazar un servicio en la nube a una dirección IP específica (y puerto) y DevFabric no puede garantizar que un servicio en particular mantenga la misma dirección entre dos depuraciones diferentes sesión.
que han resuelto el problema con una técnica sencilla:
En mis WebRoles que se refieren siempre a nombre de dominio como debug.myservice.com o debug.myotherservice.com.
la dirección IP local se resuelve mediante el anfitriones archivo se puede encontrar en:
windows/system32/drivers/etc/hosts
por anexar algunas declaraciones simples como, por ejemplo:
127.0.0.1 debug.myservice.com
127.0.0.2 debug.myotherservice.com
Esto soluciona el problema, pero puede ser extremadamente aburrido porque necesita actualizar manualmente el archivo hosts cada vez que inicia una nueva sesión de depuración.
Pero hay una solución simple y poderosa. Usted sabe que puede configurar un simple script de arranque que se ejecuta cada vez que se inicializa el servicio en la nube, se pueden encontrar más detalles aquí:
http://msdn.microsoft.com/en-us/library/windowsazure/hh180155.aspx
También puede ejecutar guión diferente cuando se está ejecutando en la nube o en el emulador
Lo que hago es ejecutar un script que actualice automáticamente el archivo hosts cada vez que mi servicio en la nube se inicialice en el entorno del emulador (y solo en el emulador).
Aquí el guión:
IF "%ComputeEmulatorRunning%" == "true" (
cd Startup
UpdateDnsHostsOnDebugEnv.exe MyCompany.MyService.Site.WebRole debug.myservice.com
cd..
)
y aquí lo que hay que añadir a ServiceDefinition.csdef con el fin de ejecutar el script en el arranque:
<Startup>
<Task commandLine="Startup\UpdateDnsHosts.cmd" executionContext="elevated" taskType="foreground">
<Environment>
<Variable name="ComputeEmulatorRunning">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
</Environment>
</Task>
</Startup>
Aviso el uso de la UpdateDnsHostsOnDebugEnv.exe programa. Esta es una aplicación de consola simple que escribí que simplemente ejecuta csrun.exe y analiza el resultado para extraer la dirección de punto final local de la función y actualizar el archivo hosts.
Espero que te ayudemos.
En respuesta parcial a mi propia pregunta: sí, cambiar el nombre de mi MVC Web Project (que también cambia el nombre de la función) a algo así como "_web" lo coloca en la parte superior de la lista y significa que se une consistentemente a 127.255.0.0. Todavía estoy interesado si hay una mejor manera de hacer esto, sin embargo, ya que esto se siente como un truco. – JcFx