Traditionnellement, j'utilise des domaines personnalisés avec mon serveur de développement localhost. Quelque chose dans le sens de:
dev.example.com
dev.api.example.com
Cela m'a fourni une tonne de flexibilité lorsque je travaille avec des API externes telles que Facebook. Cela a très bien fonctionné dans le passé avec le serveur de développement Visual Studio intégré, car tout ce que j'avais à faire était d'ajouter un CNAME à ces enregistrements DNS pointant vers 127.0.0.1
.
Cependant je n'ai pas pu obtenir ceci pour fonctionner avec IIS Express. Tout ce que j'ai essayé semble avoir échoué. J'ai même ajouté la bonne configuration XML au applicationHost.config
fichier pour IIS Express, mais il ne semble pas reconnaître les entrées aussi valides qu'une véritable installation d'IIS.
<binding protocol="http" bindingInformation="*:1288:dev.example.com" />
Chaque fois que j'entre dans cette ligne et essaie de demander, http://dev.example.com:1288
j'obtiens le message suivant:
Mauvaise demande - Nom d'hôte non valide
Est-ce que quelqu'un sait si je manque quelque chose d'évident? Ou l'équipe IIS Express n'avait-elle pas vraiment la clairvoyance pour voir ce type d'utilisation?
la source
Réponses:
C'est ce qui a fonctionné pour moi (mis à jour pour VS 2013, voir l'historique des révisions pour 2010, pour VS 2015 voir ceci: https://stackoverflow.com/a/32744234/218971 ):
Properties
▶Web
, puis configurez laServers
section comme suit:http://localhost
http://dev.example.com
Default Site
autre chose que port:80
, assurez-vous que Skype n'utilise pas le port 80 , etc.)Start URL
surhttp://dev.example.com
Ouvrez
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(Windows XP, Vista et 7) et modifiez la définition de site dans le<sites>
bloc de configuration de manière à ce que:Si vous exécutez MVC: assurez-vous que le
applicationPool
est défini sur l'une des options "Integrated" (comme "Clr2IntegratedAppPool").hosts
fichier et ajoutez la ligne127.0.0.1 dev.example.com
.Quelques bons conseils des commentaires:
la source
Pour Visual Studio 2015, les étapes des réponses ci-dessus s'appliquent mais le
applicationhost.config
fichier se trouve dans un nouvel emplacement. Dans votre dossier "solution" suivez le chemin, cela est déroutant si vous avez mis à niveau et que vous auriez DEUX versions deapplicationhost.config
sur votre machine.Dans ce dossier, vous verrez votre fichier applicationhost.config
Sinon, vous pouvez simplement rechercher le fichier .config dans votre dossier de solution et le trouver de cette façon.
J'ai personnellement utilisé la configuration suivante:
Avec ce qui suit dans mon fichier d'hôtes:
Et ce qui suit dans mon fichier applicationhost.config:
N'oubliez pas d'exécuter votre instance de Visual Studio 2015 en tant qu'administrateur! Si vous ne voulez pas faire cela à chaque fois, je vous recommande ceci:
Comment exécuter Visual Studio en tant qu'administrateur par défaut
J'espère que cela aide quelqu'un, j'ai eu des problèmes lors de la mise à niveau vers Visual Studio 2015 et j'ai réalisé qu'aucune de mes configurations n'était transférée.
la source
*:49707:
liaison au lieu de remplacer la valeur*:49707:localhost
par défaut comme suggéré dans de nombreuses autres réponses. Et vous devez exécuter VS en tant qu'administrateur, en effet (sic!). Je vous remercie.http://jam.127.0.0.1.xip.io/
si vous ne souhaitez pas modifier votre fichier d'hôtes. De plus, aucun collaborateur n'aura besoin de modifier le leur. Voir xip.io .Lors de l'utilisation de Visual Studio 2012 avec IIS Express, la modification d' une liaison existante ne fonctionne pas de manière permanente. (Cela peut fonctionner jusqu'à ce que vous fermiez VS, mais après cela, les choses se gâchent vraiment.)
La clé consiste à conserver la liaison localhost existante et à ajouter une nouvelle liaison après celle-ci.
Sauf si vous exécutez en tant qu'administrateur, vous devrez également exécuter
netsh add urlacl
(pour vous donner les autorisations d'exécuter un site non localhost en tant qu'utilisateur standard).Si vous souhaitez autoriser un nom d'hôte, le processus complet est le suivant:
À partir d'une invite d'administrateur, exécutez les commandes suivantes (en remplaçant numéro_port par le numéro de port que vous avez compris dans # 1):
Vous pouvez également utiliser votre nom d'utilisateur (DOMAINE \ UTILISATEUR) au lieu de tout le monde pour une meilleure sécurité.
Ajoutez une liaison de plus avec le nom d'hôte souhaité (dans ce cas, *). Par exemple:
Notez que, si vous souhaitez ouvrir tous les noms d'hôte (*), vous aurez besoin de deux commandes netsh (une pour * et une pour localhost). Si vous souhaitez uniquement ouvrir un nom d'hôte spécifique, vous n'avez pas strictement besoin de la deuxième commande netsh (localhost); juste celui avec votre nom d'hôte spécifique est suffisant.
la source
*
résolu le "Service non disponible" pour moi.Le nom d'hôte non valide indique que le site réel que vous avez configuré dans le fichier de configuration IIS Express n'est (probablement) pas en cours d'exécution. IIS Express n'a pas de modèle de processus comme IIS.
Pour que votre site s'exécute, il doit être démarré explicitement (soit en ouvrant et en accédant à partir de webmatrix, soit à partir de la ligne de commande appelant iisexpress.exe (à partir de son répertoire d'installation) avec le paramètre / site.
En général, les étapes pour autoriser l'utilisation de noms DNS pleinement qualifiés pour l'accès local sont: Utilisons votre exemple du nom DNS dev.example.com
Configurez la liaison IIS Express pour votre site (par exemple: Site1) pour inclure dev.example.com. Un privilège administratif sera nécessaire pour utiliser la liaison. Alternativement, une réservation URL unique peut être effectuée avec http.sys en utilisant
netsh http add urlacl url=http://dev.example.com:<port>/ user=<user_name>
démarrer
iisexpress /site:Site1
ou ouvrir Site1 dans WebMatrixla source
Bad Request - Invalid Hostname
signifie que le nom d'hôte que j'essaie d'utiliser ne peut pas être résolu car l'équipe IIS Express, dans sa sagesse infinie, a décidé d'appeler spécifiquement "localhost" comme seul en-tête d'hôte qui fonctionnerait. Et VS ne vous laissera pas l'exécuter autrement que "*: 1234: localhost"Sur mon installation WebMatrix IIS Express, le changement de
"*:80:localhost"
à"*:80:custom.hostname"
n'a pas fonctionné ("Bad Hostname", même avec les mappages appropriés etc \ hosts), mais"*:80:"
a fonctionné - et sans aucune des étapes supplémentaires requises par les autres réponses ici. Notez que"*:80:*"
cela ne le fera pas; laissez le deuxième astérisque.la source
"*:80:*"
fonctionné pour moi, mais j'ai redémarré mon ordinateur et ça ne marchait soudainement que lorsque je l'ai changé"*:80:"
et tout allait bien! Merci.J'essayais d'intégrer l'adresse IP publique dans mon flux de travail et ces réponses n'ont pas aidé (j'aime utiliser l'IDE comme IDE). Mais ce qui précède m'a amené à la solution (après environ 2 heures à me battre la tête contre un mur pour que cela s'intègre à Visual Studio 2012 / Windows 8), voici ce qui a fini par fonctionner pour moi.
applicationhost.config généré par VisualStudio sous
C:\Users\usr\Documents\IISExpress\config
Administrator
afin qu'il puisse se lier à des adresses externes (pas à l'hôte local)Administrator
tant que afin qu'il puisse démarrer le processus en tant qu'administrateur permettant à la liaison d'avoir lieu.Le résultat net est que vous pouvez naviguer
192.168.2.102
dans mon cas et tester (par exemple dans un émulateur Android. J'espère vraiment que cela aidera quelqu'un d'autre car cela a certainement été un processus irritant pour moi.Apparemment, c'est une fonction de sécurité que j'aimerais voir désactivée.
la source
Comme Jessa Flint ci - dessus , je ne voulais pas modifier manuellement .vs \ config \ applicationhost.config parce que je voulais que les modifications persistent dans le contrôle de code source. Je ne voulais pas non plus avoir de fichier de commandes séparé. J'utilise VS 2015 .
Propriétés du projet → Créer des événements → Ligne de commande d'événement de pré-génération:
Assurez-vous simplement de changer le numéro de port pour le port souhaité.
la source
La réponse votée est valide .. et cette information m'a beaucoup aidé. Je sais que ce sujet a déjà été discuté, mais je voulais ajouter quelques informations supplémentaires. Les gens disent que vous devez "modifier manuellement" le fichier application.config dans le répertoire Users IISExpress / Config. C'était un gros problème pour moi car je voulais distribuer la configuration via le contrôle de source à différents développeurs.
Ce que j'ai trouvé, c'est que vous pouvez automatiser la mise à jour de ce fichier en utilisant le programme "C: \ Program Files \ IIS Express \ appcmd.exe". Il a fallu un certain temps pour découvrir les paramètres de contrôle, mais je vais partager mes résultats ici. Essentiellement, vous pouvez créer un fichier .bat qui exécute à la fois la commande NETSH et APPCMD.EXE (et peut-être échanger un fichier hôte si vous le souhaitez) pour faciliter la configuration d'en-tête d'hôte avec IIS Express.
Votre fichier d'installation bat ressemblerait à ceci:
Je vais également créer un fichier de chauve-souris "Désinstaller" qui nettoiera ces liaisons .. (parce que souvent je fais juste semblant de DNS pour pouvoir travailler sur du code sensible au nom d'hôte)
J'espère que ces informations sont utiles à quelqu'un .. Cela m'a pris un peu de temps à découvrir.
la source
En suivant les conseils de Jaro, j'ai pu faire fonctionner cela sous Windows XP et IIS Express (installé via Web Matrix) avec une petite modification et je n'ai pas été limité à seulement localhost. Il s'agit simplement de définir correctement les liaisons.
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(les chemins d'accès de Windows XP. Vista et 7 seront similaires) et modifiez la définition de site dans le<sites>
bloc de configuration de manière à ce que:Si vous exécutez MVC, conservez le jeu ApplicationPool sur l'une des options "intégrées".
la source
La solution de David est bonne. Mais j'ai trouvé que
<script>alert(document.domain);</script>
la page alerte toujours "localhost" car l'URL du projet est toujours localhost même si elle a été remplacée parhttp://dev.example.com
. Un autre problème que je rencontre est qu'il m'avertit que le port 80 a déjà été utilisé même si j'ai désactivé Skype en utilisant le numéro de port 80 comme recommandé par David Murdoch. J'ai donc trouvé une autre solution beaucoup plus simple:http://localhost:33333/
), puis modifiez-la à partir dehttp://localhost:33333/
àhttp://mydomain:333333/
noter: après cette modification, vous ne devez ni cliquer sur le bouton "Créer un répertoire virtuel" à droite de la zone URL du projet ni cliquer sur le bouton Enregistrer de Visual Studio car ils ne seront pas réussis. Vous pouvez enregistrer vos paramètres après l'étape suivante 3.http://mydomain:333333/
, et<script>alert(document.domain);</script>
dans la page alertera "mondomaine".Remarque: Le numéro de port répertorié ci-dessus est supposé être 33333. Vous devez le remplacer par le numéro de port défini par votre studio visuel.
Post édité: Aujourd'hui, j'ai essayé avec un autre nom de domaine et j'ai eu l'erreur suivante: Impossible de lancer le serveur Web IIS Express. Impossible d'enregistrer l'URL ... L'accès est refusé. (0x80070005) . Je quitte IIS Express en cliquant avec le bouton droit sur l'icône IIS Express dans le coin droit de la barre des tâches Windows, puis je redémarre Visual Studio en tant qu'administrateur, et le problème a disparu.
la source
J'ai essayé tout ce qui précède, rien n'a fonctionné. Ce qui a résolu le problème était l'ajout de liaisons IPv6 dans le fichier hosts. À l'étape 5 de la réponse de @David Murdochs, ajoutez deux lignes au lieu d'une, c'est-à-dire:
Je l'ai compris en vérifiant à
$ ping localhost
partir de la ligne de commande, qui renvoyait:Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Au lieu de cela, il renvoie maintenant:
Reply from ::1: time<1ms
Je ne sais pas pourquoi, mais pour une raison quelconque, IIS Express a commencé à utiliser IPv6 au lieu d'IPv4.
la source
J'utilisais iisexpress-proxy (à partir de npm) pour cela.
https://github.com/icflorescu/iisexpress-proxy
la source
Laissant cela ici juste au cas où quelqu'un aurait besoin ...
J'avais besoin d'avoir des domaines personnalisés pour une configuration Wordpress Multisite dans IIS Express mais rien n'a fonctionné jusqu'à ce que j'exécute Webmatrix / Visual Studio en tant qu'administrateur. Ensuite, j'ai pu lier des sous-domaines à la même application.
Ensuite, allez sur http: //wwhat.localhost: 12345 / s'exécutera.
la source