Dans VirtualBox, comment puis-je accéder à l'hôte localhost à partir d'un invité (Visual Studio Dev Server à partir de la machine virtuelle de test IE7)?

7

Le système d'exploitation hôte est Win7 exécutant MyApp dans le serveur de développement Visual Studio, lié à localhost: 51227, VM est VirtualBox configuré avec NAT. Le système d'exploitation invité est Win XP avec IE7 installé. Mon objectif est de déboguer MyApp (en cours d'exécution sur l'hôte) à partir de IE7 (en cours d'exécution sur un invité).

Le serveur de développement Visual Studio se lie uniquement au périphérique réseau en boucle (localhost). Il ne se lie pas à l'adresse IP externe de mon hôte.

J'ai essayé d'accéder 10.0.2.2:51227 à partir d'IE7 sur l'invité (et confirmé que 10.0.2.2 est l'adresse de passerelle utilisant ipconfig), mais il semble que 10.0.2.2 se lie à l'adresse IP externe de l'hôte, PAS à l'adresse IP de bouclage. (localhost), donc cela ne fonctionne pas.

Aucune suggestion?

Seth
la source
1
Je ne comprends pas très bien ce que vous essayez de faire. Testez-vous simplement la fonctionnalité côté client (mise en page, Javascript, etc.) dans IE7 ou essayez-vous de parcourir le code dans l'application Web .NET elle-même?
James P
Je voudrais tester la fonctionnalité côté client (mais il y a un bogue méchant dans IE7, je veux donc utiliser mon serveur de développeurs pour permettre des changements rapides et une exploration du problème). Je ne veux pas avoir à pousser des versions sur un serveur de transfert (avec une adresse IP accessible à une machine virtuelle) après avoir ajouté chaque test printf ou peu d'expérience.
Seth
Je suis ouvert à une solution différente à mon problème général, mais la solution la plus simple que je puisse imaginer est de pouvoir "simplement accéder à l'hôte localhost à partir de ie7 s'exécutant sur la machine virtuelle invitée". Peut-être que VirtualBox n’a pas cette capacité?
Seth
Je ne sais pas s'il est possible de faire ce que vous voulez, mais le serveur Web de développement Visual Studio n'est pas conçu pour être accessible en dehors du contexte de localhost - c'est la raison d'être de IIS. Avez-vous essayé IETester - my-debugbar.com/wiki/IETester/HomePage ? Il vous permet de tester des sites Web en utilisant différentes versions d’IE et j’ai constaté qu’il correspond normalement à la version d’IE choisie.
James P

Réponses:

8

La solution la plus simple pour moi était d’utiliser SPI Port Forward sur l’hôte pour permettre l’accès à mon service localhost uniquement à partir d’une interface réseau externe:

  1. Téléchargez le transfert de port SPI et exécutez-le sur l'hôte (aucun programme d'installation, le téléchargement est un fichier exe nu)
  2. Important : le pare-feu Windows vous demandera si SPI Port Forward est autorisé à accéder aux réseaux publics. Cochez la case pour autoriser l'accès depuis les réseaux publics .
  3. Définissez le port local sur 8888 (ou ce que vous voulez), l'hôte distant sur localhost, le port distant sur le port du service cible sur l'hôte (dans mon cas 51227, VSDS s'exécutant sur le port 51227), puis cliquez sur "Activer".
  4. Accédez à 10.0.2.2:8888 à partir de l'invité.

Remarque: Si 10.0.2.2 ne fonctionne pas, exécutez cmd sur l'invité pour afficher une ligne de commande, utilisez "ipconfig" et utilisez l'adresse de passerelle par défaut, mais VirtualBox utilise par défaut la valeur 10.2.2.2. pari sûr.

Il convient de noter que cette configuration autorisera l’ACCÈS IP EXTERNE À VSDS. Il faut donc l’utiliser avec prudence… bien sûr, cela peut être utile si vous souhaitez déboguer l’assistance téléphonique ou autre.

Seth
la source
Vous êtes mon sauveur, je cherchais quelque chose de simple, comme SPI Port Forward, pour tester mon site mobile sur le réseau, via mon terminal mobile. Cette solution a fonctionné pour moi dans Windows 8.
Rubens Mariuzzo Le
0

Bien que VirtualBox puisse accéder à l'interface de bouclage sur l'hôte (comme tout autre programme exécuté sur l'hôte), elle ne fournit aucun moyen d'y accéder à partir d'un système d'exploitation invité (ce qui est également le cas dans d'autres solutions de virtualisation que je connais).

Si VirtualBox a fourni un accès à l'interface de bouclage de l'hôte, il doit créer une interface supplémentaire sur chaque invité, liée à l'interface de bouclage de l'hôte.

Pourquoi cette interface supplémentaire? Parce que, sur l'invité, tout trafic envoyé à 127.0.0.1 serait automatiquement transféré vers sa propre interface de bouclage et non vers l'hôte.

Je peux penser à une solution de contournement : associez Visual Studio Development Server à 10.0.2.2. Ainsi, votre environnement de développement n'est pas accessible de l'extérieur mais accessible par l'invité de VirtualBox (bien que j'ai lu dans le commentaire de James ci-dessus qu'il ne soit peut-être pas possible, j'ai lu des recommandations pour lier VS àw3p.exe , ce qui semble fonctionner au moins sur Windows 2003 ).

Jaume
la source
Comme @James le souligne, je pourrais passer de VSDS à IIS de mon serveur de développement à l'intérieur de VS. Mais pour une raison quelconque, mon application refuse de fonctionner dans ce mode gardez plutôt ma configuration de développement la même (ne pas avoir à singe avec les paramètres VS chaque fois que je veux tester IE7). Je ne m'attendrais pas à ce que VirtualBox fusionne host-localhost <-> guest-localhost, j'espérais qu'il fournirait une deuxième interface avec une adresse IP standard telle que 127.0.0.2 ou quelque chose du genre.
Seth
Dommage, cela ne fonctionne pas ... Juste comme note: 127.0.0.2 est aussi un bouclage. Toute la gamme 127.0.0.1-127.255.255.254 est réservée au bouclage ...
jaume