with tutorial net framework example asp c# asp.net-mvc azure windows-phone-8 asp.net-web-api

tutorial - web api rest c#



Acceso al emulador Azure desde otro dispositivo (5)

Como ya está usando IIS (regular) y afirma que funciona, puede usar Server Farming como un tipo de Reverse Proxy + Load Balancer para lograr su objetivo:

  1. Ejecute su proyecto WebRole y guarde las Urls internas (como aparece en la imagen 127.255.0.2:82 ).

  2. Abra el IIS Manager > Server Farms > Create Server Farm .

  3. Elija un nombre y haga clic en Next . en el siguiente panel (''Agregar servidor'') agrega todas las URL que reuniste en el paso 1 y Finish .

  4. Haga clic en Yes cuando se le pregunte si desea crear las Rewrite Rules adecuadas para esta Granja.

  5. En la lista Server Farms , haga clic en su nueva Granja y elija Proxy en los iconos de la derecha, marque la casilla Reverse rewrite host in response headers .

  6. Ahora puede usar su dirección de enlace de IIS normal para acceder a las instancias de Emulator (una vez que se ejecuta).

PD: si desea revertir estos cambios, elimine la Granja. luego haga clic en el nombre de su computadora / servidor (elemento raíz) en el árbol izquierdo, elija Url Rewrite a la derecha y elimine las reglas ARR .

Tengo dos proyectos diferentes:

  1. Aplicación Windows Phone 8, que estoy ejecutando en un dispositivo real de desarrollo físico.
  2. El servicio Azure Cloud, que contiene un punto final WebRole simple que contiene un ASP.NET MVC WebAPI.

Mi objetivo es simple:
Utilice la aplicación WP8 que se ejecuta desde un dispositivo real para acceder (usando HTTPClient) al controlador WebAPI mientras está implementado en Azure Emulator.

¿Qué es el trabajo?

  1. La aplicación puede comunicarse con éxito con WebApi cuando se implementa en Azure Cloud.
  2. La aplicación puede comunicarse con éxito con WebApi cuando está alojada localmente en IIS Express (sin Azure), y las configuraciones de IIS Express se modifican siguiendo este artículo.

Por lo que yo entiendo, el problema es que Azure Emulator está configurado para escuchar en la dirección IP 127.0.0.1, que no es accesible desde fuera del dominio localhost.

Encontré esta publicación que ofrece una solución a este problema exacto, pero intentar seguirla genera una Excepción desconocida al intentar implementar en Azure Emulator.

¿Es realmente imposible probar localmente la aplicación WP8 que se comunica con Azure Cloud Service?


He encontrado la manera, gracias a esta gran publicación aquí.

Aparentemente, al redirigir el tráfico enviado a mi dirección IP local (por ejemplo, 192.168.0.1) a 127.0.0.1, ahora puedo usar Windows Phone 8 Emulator contra las instancias de Azure Cloud Emulator.

La forma en que hice el enrutamiento es mediante el uso de una aplicación simple llamada PassPort , pero supongo que hay muchas alternativas.


Descubrí cómo es posible tener un emulador de teléfono o un dispositivo físico Windows Phone conectado que se comunique con Azure Emulator.

Para otros desarrolladores que luchan con el mismo requisito, estos son los pasos necesarios para que funcione:

Suposiciones

  1. Usted conoce la dirección IP de la máquina de alojamiento.
  2. Ningún cortafuegos está bloqueando el acceso
  3. Cierre los emuladores IIS y Azure y reinícielos después de los cambios de configuración

Emulador de cálculo de Azure:

  1. Abra "C:/Program Files/Microsoft SDKs/Windows Azure/Emulator/devfabric/DevFC.exe.config" para editar.
  2. Establezca "VipPoolStartIPAddress" y "VipPoolEndIPAddress" en la IP de su máquina de host (por ejemplo, 192.168.1.100)

Azure Storage Emulator:

  1. Abra "C:/Program Files/Microsoft SDKs/Windows Azure/Emulator/devstore/DSServiceLDB.exe.config" y "C:/Program Files/Microsoft SDKs/Windows Azure/Emulator/devstore/DSServiceSQL.exe.config" para edición.
  2. Establezca la sección de services en ambos archivos para usar IP de alojamiento.
  3. Configure la cadena de conexión de almacenamiento en la configuración "Rol" (en lugar de la configuración predeterminada del Windows Azure storage emulator ):
    • Haga clic derecho en el Role (en la carpeta "Roles" en el explorador de soluciones) para ingresar a su página de Properties . Haga clic en la pestaña Settings . Asegúrese de editar la configuración Local (selecciónela en el cuadro de selección Service Configuration ).
    • Edite la cadena de conexión para el almacenamiento
    • Ingrese manualmente las credenciales
    • El nombre de cuenta y la clave de cuenta están escritos en la sección de accounts en DSServiceSQL.exe.config
    • Especifique puntos finales personalizados con su IP de alojamiento.

¡Disfrutar!


No necesita ninguna aplicación externa para hacer esto. Pruebe el reenvío de puertos usando lo siguiente:

  1. Ejecute su aplicación en el emulador de Azure y luego descubra su IP y Puerto haciendo clic derecho en el ícono de IIS Express en la bandeja del sistema (digamos 127.0.0.1:81)

  2. Ahora elija un puerto para escuchar (digamos 8088) y reenvíe sus solicitudes entrantes a su aplicación simplemente ejecutando el siguiente comando en un símbolo del sistema elevado:

    netsh interface portproxy add v4tov4 listenport=8088 connectaddress=127.0.0.1 connectport=81 protocol=tcp

  3. Si el firewall se está ejecutando y su puerto elegido está bloqueado, abra el puerto (8088 en este ejemplo) agregando una regla de entrada al Firewall de Windows.

Ahora navegue usando su computadora IP, como 192.168.0.100:8088, y ahora debería poder acceder a su aplicación. Y esto se puede utilizar a través de su aplicación WP o Cordova (móvil) para realizar pruebas localmente. Espero que esto ayude.

(Si desea eliminar el reenvío de puertos, simplemente use el interruptor de eliminación del comando netsh interface portproxy ).


Sé que esto ya ha sido respondido, pero aún no se ha publicado una solución simple a este problema. Esto es lo que hice para que mi Mac hablara con Azure Storage Emulator (v4.3) ejecutándose en mi PC a través de mi LAN.

Estoy ejecutando Windows 10 Versión 1511 con v4.3 del Azure Storage Emulator al momento de escribir.

  1. Asegúrese de que Azure Storage Emulator está desactivado. Puede hacerlo abriendo el símbolo del sistema de Azure Storage Emulator. Puede encontrarlo escribiendo Azure Storage Emulator en el menú Inicio. Una vez abierto, escriba AzureStorageEmulator stop .
  2. Tome la dirección IP de la computadora que ejecuta Azure Storage Emulator. Escriba ipconfig en el símbolo del sistema que ya tiene abierto. Encuentra la dirección IPV4: debería ser algo así como 192.168.1.xxx
  3. Abra el archivo ubicado en C:/Program Files (x86)/Microsoft SDKs/Azure/Storage Emulator/AzureStorageEmulator.exe.config
  4. En la sección StorageEmulatorConfig , edite cada servicio para que se vea a continuación. Obviamente, reemplace "xxx.xxx.xxx.xxx" con su dirección IP real ... ¡pero mantenga los puertos iguales!
  5. Luego, dirígete a la configuración de tu firewall. Tendremos que permitir las conexiones entrantes a la dirección IP de su computadora a estos tres puertos enumerados anteriormente en la sección StorageEmulatorConfig . En Panel de control -> Sistema y seguridad -> Firewall de Windows -> Configuración avanzada -> Reglas de entrada, haga clic en New Rule... en el lado derecho de la pantalla. Se ejecutará un asistente para configurar una nueva regla. Voy a resumir qué hacer a continuación:

Tipo de regla : Seleccione Custom

Programa : Seleccione Customize... luego Apply to services only

Protocolo y puertos : establezca el Protocol type de TCP en TCP y establezca el Remote port en Specific Ports y en el cuadro de entrada ingrese 10000-10002 . Eso agregará el rango de puertos especificados en la sección StorageEmulatorConfig a esta regla y, a su vez, permitirá las conexiones entrantes a través de esos puertos.

Alcance : saltee esta sección, haga que se aplique a todas las direcciones IP por simplicidad

Acción : Permitir la conexión

Perfil : según el perfil de conexión en el que se esté ejecutando, debe seleccionar el apropiado. En mi caso, mi computadora estaba conectada a la LAN en mi casa, por lo que estaba conectado a una red privada . No deseleccioné Domain y Public . Yo recomendaría hacer lo mismo.

Nombre : Azure Storage Emulator

¡Finaliza el golpe y listo! ... con esa parte ...

  1. Abra un indicador de comando elevado del Administrador e ingrese los siguientes comandos (Nota: reemplace el xxx.xxx.xxx.xxx con su dirección IP !!!):

    netsh http add urlacl url=http://xxx.xxx.xxx.xxx:10000/ user=everyone

    netsh http add urlacl url=http://xxx.xxx.xxx.xxx:10001/ user=everyone

    netsh http add urlacl url=http://xxx.xxx.xxx.xxx:10002/ user=everyone

  2. Abra un navegador en el dispositivo donde intenta conectarse a Azure Storage Emulator e intente acceder a las siguientes URL:

    http://xxx.xxx.xxx.xxx:10002/

    http://xxx.xxx.xxx.xxx:10002/

    http://xxx.xxx.xxx.xxx:10002/

Si recibes una respuesta, esto es algo como esto:

InvalidUriEl URI solicitado no representa ningún recurso en el servidor.

entonces eres oro ... Si no, publica un comentario y actualizaré mi respuesta.

Es importante tener en cuenta que debe actualizar la cadena de conexión en el archivo .config del proyecto donde está generando las URL para acceder a sus imágenes (suponiendo que eso es lo que está haciendo). ¡USTED NO PUEDE UTILIZAR MÁS EL ACUERDO DE STRING DE CONEXIÓN DE DESARROLLO! Debe actualizarse a: (reemplace xxx.xxx.xxx.xxx con la dirección IP de arriba:

DefaultEndpointsProtocol = http; AccountName = devstoreaccount1; AccountKey = Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq / K1SZFPTOtr / KBHBeksoGMGw ==; BlobEndpoint = http://xxx.xxx.xxx.xxx:10000/devstoreaccount1;TableEndpoint=http://xxx.xxx.xxx.xxx: 10002 / devstoreaccount1; QueueEndpoint = http: //xxx.xxx.xxx.xxx: 10001 / devstoreaccount1 ;

Si tiene esto en su sección AppSettings y lo formatea muy bien con / n, romperá la cadena y el componente de almacenamiento no lo reconocerá como una cadena de conexión válida. Así que mantenlo una cadena larga e irritante.