Utilisation de domaines personnalisés avec IIS Express

304

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.configfichier 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:1288j'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?

Nick Berardi
la source
Assurez-vous que l'attribut applicationPool du nœud d'application est défini sur "Clr2IntegratedAppPool" ou "Clr4IntegratedAppPool". J'ai l'erreur Bad Hostname que vous voyez lors de l'utilisation de "Clr2ClassicAppPool" ou "Clr4ClassicAppPool".
Neil Monroe
confused - les enregistrements CNAME n'acceptent pas les adresses IP mais d'autres noms d'hôte à la place. Voulez-vous dire A record?
Scott Coates
1
J'ai eu beaucoup de problèmes avec cela et j'ai trouvé beaucoup plus facile d'utiliser simplement IIS au lieu d'IIS Express
user0b101010
Je viens de rencontrer ça aussi. J'espérais qu'il regarderait simplement le numéro de port et ignorerait le domaine. Pas de chance. J'aimerais pouvoir activer "tout accepter" sur le port ....
Brady Moritz
Votez maintenant! J'ai ajouté une suggestion UserVoice: visualstudio.uservoice.com/forums/121579-visual-studio/…
Luke Puplett

Réponses:

367

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 ):

  1. Cliquez avec le bouton droit sur votre projet d'application Web ▶ PropertiesWeb, puis configurez la Serverssection comme suit:
    • Sélectionnez IIS Express ▼dans le menu déroulant
    • URL du projet: http://localhost
    • Remplacer l'URL racine de l'application: http://dev.example.com
    • Cliquez sur Create Virtual Directory(si vous obtenez une erreur ici, vous devrez peut-être désactiver IIS 5/6/7/8, remplacer IIS par Default Siteautre chose que port :80, assurez-vous que Skype n'utilise pas le port 80 , etc.)
  2. Facultativement: définissez le Start URLsurhttp://dev.example.com
  3. 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:

    <site name="DevExample" id="997005936">
        <application path="/" applicationPool="Clr2IntegratedAppPool">
            <virtualDirectory
                path="/"
                physicalPath="C:\path\to\application\root" />
        </application>
        <bindings>
            <binding
                protocol="http"
                bindingInformation=":80:dev.example.com" />
        </bindings>
        <applicationDefaults applicationPool="Clr2IntegratedAppPool" />
    </site>
    
  4. Si vous exécutez MVC: assurez-vous que le applicationPoolest défini sur l'une des options "Integrated" (comme "Clr2IntegratedAppPool").

  5. Ouvrez votre hostsfichier et ajoutez la ligne 127.0.0.1 dev.example.com.
  6. ► Start ton application!

Quelques bons conseils des commentaires:

  • Vous devrez peut-être exécuter Visual Studio en tant qu'administrateur.
  • Si vous souhaitez que d'autres développeurs voient votre exécution IIS netsh http add urlacl url=http://dev.example.com:80/ user=everyone
  • Si vous souhaitez que le site soit résolu pour tous les hôtes définis bindingInformation="*:80:". Utilisez n'importe quel port que vous voulez, 80 est tout simplement pratique.
David Murdoch
la source
12
C'est exactement ce que j'ai fait, j'étais sur le point d'écrire cela, mais vous me battez pour le punch :-) En remarque, si vous voulez que d'autres développeurs voient votre IIS, vous voudrez peut-être faire quelque chose comme "netsh http add urlacl url = dev.example.com:80 utilisateur = tout le monde "
EBarr
6
De plus, si vous souhaitez que le site soit résolu pour tous les hôtes, vous pouvez utiliser: bindingInformation = "*: 80:" J'utilise ceci pour que localtunnel.com fonctionne.
Lance Fisher
17
J'obtenais une erreur d'accès refusé. L'exécution de VS 2012 en tant qu'administrateur l'a corrigé.
xanadont
3
de quelle version d'IIS Express s'agit-il? J'exécute VS2012 (qui, je crois, est IIS Express 8.0), et lorsque je clique sur le bouton radio "Utiliser le serveur IIS local" sous la zone "Serveurs" de la page des propriétés Web, cochez la case Utiliser IIS Express, puis essayez mettre " mydev.example.com ", puis cliquer sur le bouton "Créer un répertoire virtuel", j'obtiens cette erreur "Impossible de créer le répertoire virtuel. Impossible de créer le site Web mydev.example.com". Vous devez spécifier "localhost" pour le nom du serveur.
Michael McCarthy
12
C'est compliqué. Il faut changer les lieux à plusieurs endroits différents. Il est facile de faire un vrai gâchis. N'y a-t-il vraiment pas de moyen plus simple?
Anderson
151

Pour Visual Studio 2015, les étapes des réponses ci-dessus s'appliquent mais le applicationhost.configfichier 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 de applicationhost.configsur votre machine.

\.vs\config

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:

entrez la description de l'image ici

Avec ce qui suit dans mon fichier d'hôtes:

127.0.0.1       jam.net
127.0.0.1       www.jam.net

Et ce qui suit dans mon fichier applicationhost.config:

<site name="JBN.Site" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Dev\Jam\shoppingcart\src\Web\JBN.Site" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:49707:" />
            <binding protocol="http" bindingInformation="*:49707:localhost" /> 
    </bindings>
</site>

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.

njfife
la source
9
La partie cruciale consiste à ajouter la deuxième *:49707:liaison au lieu de remplacer la valeur *:49707:localhostpar 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.
fracz
3
Vous pouvez également utiliser une URL comme 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 .
Zack Martin
1
Je pense qu'il vaut la peine de noter que le dossier ".vs" est caché et devrait être rendu visible au début
Déçu
3
J'ai confirmé que cela fonctionne également dans Visual Studio 2017. Fait intéressant, je n'avais pas besoin des deux éléments <binding> (juste le premier sans "localhost"). Visual Studio, cependant, doit certainement être exécuté en tant qu'administrateur, ce qui est en quelque sorte ennuyeux
Loren Paulsen
1
Je souhaite juste qu'il y ait un moyen pour ceux d'entre nous qui ne sont pas autorisés à exécuter quoi que ce soit administrativement pour le faire. Les employeurs / clients qui interdisent le privilège administrateur sans penser à la façon dont ils pourraient l'activer en toute sécurité sont incroyablement myopes.
Steve Pettifer
44

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:

  1. Créez votre application Web et découvrez quel port elle utilise (voir Propriétés du projet, onglet Web, URL du projet).
  2. À 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):

    netsh http add urlacl url="http://*:portnumber/" user=everyone
    netsh http add urlacl url="http://localhost:portnumber/" user=everyone
    

Vous pouvez également utiliser votre nom d'utilisateur (DOMAINE \ UTILISATEUR) au lieu de tout le monde pour une meilleure sécurité.

  1. Ouvrez applicationhost.config (généralement sous Mes documents \ IIS Express \ config) et recherchez l'élément avec votre numéro de port.
  2. Ajoutez une liaison de plus avec le nom d'hôte souhaité (dans ce cas, *). Par exemple:

    <site name="MvcApplication1" id="2">
        <application path="/" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\sites\MvcApplication1" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:12853:localhost" />
            <binding protocol="http" bindingInformation="*:12853:*" />
        </bindings>
    </site>
    

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.

dmatson
la source
A fait la même chose (1ère approche), lors de la navigation vers mycustomhost: myportnr, je reçois "Service non disponible". VS2012. Je ne peux pas essayer le 2ème car il n'y a pas d'IIS Express sous "Mes documents" et applicationhost.config que j'ai trouvé dans c: \ Program files \ IIS Express n'avait pas de configuration pour mon application web ...
firepol
2
Avec VS2013, je trouve que cette configuration ne fonctionne que si je lance ensuite en tant qu'administrateur! (En cours d'exécution en tant que non administrateur, IIS Express semble ignorer la 2e liaison - si j'ouvre son interface utilisateur à partir de l'icône de notification, IIS affiche mon site comme en cours d'exécution, mais ne montre que la première liaison, et je ne peux utiliser que localhost ... Si J'exécute en tant qu'administrateur, il montre les deux liaisons dans l'interface utilisateur et les deux fonctionnent.) J'ai ajouté les urlacls avec netsh, mais cela ne semble faire aucune différence - IIS Express ne semble même pas essayer de lier autre chose que localhost s'il n'est pas élevé.
Ian Griffiths
Ajout d'un enregistrement avec le *résolu le "Service non disponible" pour moi.
Jerone
Qu'en est-il d'un scénario dont vous avez besoin pour utiliser HTTPS sur le port 443?
Kixoka
@Kixoka J'essaie d'exécuter HTTPS. J'ai réussi à le faire fonctionner mais le navigateur se plaint que le certificat ne correspond pas au domaine. J'ai dépassé cela, mais toutes les ressources ne se chargent pas, donc pas d'images, de scripts ou de CSS.
Prime By Design
24

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

  1. éditez le fichier% windows% \ system32 \ drivers \ etc \ hosts pour mapper dev.example.com à 127.0.0.1 (privilège administrateur requis). Si vous contrôlez le serveur DNS (comme dans le cas de Nick), l'entrée DNS est suffisante car cette étape n'est pas nécessaire.
  2. Si vous accédez à Internet via un proxy, assurez-vous que dev.example.com ne sera pas averti du proxy (vous devez le mettre dans la liste d'exceptions de votre navigateur (pour IE, ce serait Outils / Options Internet / Connexions / Paramètres LAN, puis allez dans Proxy Server / Advanced et mettez dev.example.com dans la liste d'exceptions.
  3. 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>

  4. démarrer iisexpress /site:Site1ou ouvrir Site1 dans WebMatrix

Jaro Dunajsky
la source
2
Salut Jaro, merci pour l'aide, mais 127.0.0.1 est défini dans mon DNS et non dans le fichier hosts afin que tous les développeurs aient le même accès. Deuxièmement, je ne parviens pas à le faire déboguer dans VS, à moins que la liaison ne soit définie comme "*: 1234: localhost", ce qui est une configuration totalement inutile, car il est lié à toutes les adresses IP sur ma machine mais accepte uniquement les en-têtes d'hôte de "localhost" ". Pourquoi n'ont-ils pas simplement fait "127.0.0.1:1234:" et évité toutes ces conneries. Les en-têtes d'hôte ne sont pas nécessaires tant que l'IP et le port sont résolus. Et courir en tant qu'administrateur est juste une énorme douleur dans le cul pour une grande équipe. Quelle catastrophe IIS Express.
Nick Berardi
1
De même, une référence Bad Request - Invalid Hostnamesignifie 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"
Nick Berardi
2
Je vous entends sur la question 127.0.0.1. Le "localhost" dans la liaison est certainement un problème car il n'inclut pas le trafic pour 127.0.0.1 . La conception est limitée par le contrat actuel de http.sys (gestionnaire de protocole http) qui ne reconnaît que "localhost" pour une utilisation non administrative. L'exigence d'administrateur uniquement peut être atténuée par une réservation d'URL unique avec http.sys (mettra à jour les informations ci-dessus). Veuillez me faire savoir que vous utilisez exactement avec Visual Studio (c'est VS2010 avec SP1 Beta?). Essayons de travailler un peu plus sur ce sujet et (espérons-le) réglons le problème.
Jaro Dunajsky
note - si vous voyez l'erreur 87 de netsh.exe, le paramètre est incorrect - peut-être parce que vous avez omis un chemin URI (/) après votre nom d'hôte.
Tim Lovell-Smith
19

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.

rymo
la source
3
uuuum, donc ça a "*: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.
CWSpear
2
Finalement!! J'ai également suivi toutes les étapes ailleurs, et la suppression du * à la fin l'a fait fonctionner, merci!
Charles Philip
Juste ici pour dire que cela a fonctionné pour moi. J'ai essayé la réponse acceptée et annulé tous les changements jusqu'à ce que vous avez dit et tout fonctionne très bien. J'utilise VS2013 Update4.
JasonWilczak
Cela semble fonctionner parfaitement. Lorsque vous utilisez VS2017, je ne sais pas quoi placer dans l'URL du projet pour qu'il l'écrive dans le fichier applicationhost.config? Est-il possible de définir via VS IDE?
Jim
8

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 sousC:\Users\usr\Documents\IISExpress\config

    <site name="MySite" id="1">
        <application path="/" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\Users\usr\Documents\Visual Studio 2012\Projects\MySite" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:8081:localhost" />
            <binding protocol="http" bindingInformation="*:8082:localhost" />
            <binding protocol="http" bindingInformation="*:8083:192.168.2.102" />
        </bindings>
    </site>
  • Définissez IISExpress pour qu'il s'exécute Administratorafin qu'il puisse se lier à des adresses externes (pas à l'hôte local)
  • Exécutez Visual Stuio en Administratortant 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.102dans 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.

Daniel B. Chapman
la source
8

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: Capture d'écran des propriétés du projet


::The following configures IIS Express to bind to any address at the specified port

::remove binding if it already exists
"%programfiles%\IIS Express\appcmd.exe" set site "MySolution.Web" /-bindings.[protocol='http',bindingInformation='*:1167:'] /apphostconfig:"$(SolutionDir).vs\config\applicationhost.config"

::add the binding
"%programfiles%\IIS Express\appcmd.exe" set site "MySolution.Web" /+bindings.[protocol='http',bindingInformation='*:1167:'] /apphostconfig:"$(SolutionDir).vs\config\applicationhost.config"

Assurez-vous simplement de changer le numéro de port pour le port souhaité.

Jon
la source
Un ajout mineur ici. Assurez-vous de créer des règles pour ouvrir ce port dans votre pare-feu Windows. Ensuite, cela a fonctionné comme un charme!
Peter M
J'aime votre réponse car la modification du fichier .vs \ config \ applicationhost.config n'est pas possible lorsque plusieurs développeurs exécutent IIS Express sur leurs propres machines. Je vous remercie!
Colin
6

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:

netsh http add urlacl url=http://yourcustomdomain.com:80/ user=everyone 

"C:\Program Files\IIS Express\appcmd.exe" set site "MyApp.Web" /+bindings.[protocol='http',bindingInformation='*:80:yourcustomdomain.com']

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)

netsh http delete urlacl url=http://yourcustomdomain.com:80/

"C:\Program Files\IIS Express\appcmd.exe" set site "MyApp.Web" /-bindings.[protocol='http',bindingInformation='*:80:yourcustomdomain.com']

J'espère que ces informations sont utiles à quelqu'un .. Cela m'a pris un peu de temps à découvrir.

Jesse Flint
la source
4

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.

  1. Utilisez WebMatrix pour créer un nouveau site à partir du dossier dans la racine de votre application Web.
  2. Fermez WebMatrix.
  3. Ouvrez %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:

    <site name="DevExample" id="997005936">
        <application path="/" applicationPool="Clr2IntegratedAppPool">
            <virtualDirectory
                path="/"
                physicalPath="C:\path\to\application\root" />
        </application>
        <bindings>
            <binding
                protocol="http"
                bindingInformation="*:80:dev.example.com" />
        </bindings>
        <applicationDefaults applicationPool="Clr2IntegratedAppPool" />
    </site>

Si vous exécutez MVC, conservez le jeu ApplicationPool sur l'une des options "intégrées".

Neil Monroe
la source
3

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 par http://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:

  1. Exécutez le Bloc-notes en tant qu'administrateur et ouvrez les hôtes C: \ Windows \ System32 \ drivers \ etc \, ajoutez 127.0.0.1 mon domaine et enregistrez le fichier;
  2. Ouvrez le projet Web avec Visual Studio 2013 (Remarque: doit également s'exécuter en tant qu'administrateur), cliquez avec le bouton droit sur le projet -> Propriétés -> Web, (supposons que l'URL du projet sous l'option "IIS Express" soit http://localhost:33333/), puis modifiez-la à partir de http://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.
  3. Ouvrez% USERPROFILE% \ My Documents \ IISExpress \ config \ applicationhost.config, recherchez "33333: localhost", puis mettez-le à jour "33333: mydomain" et enregistrez le fichier.
  4. Enregistrez votre paramètre comme indiqué à l'étape 2.
  5. Faites un clic droit sur une page Web dans votre studio visuel, puis cliquez sur "Afficher dans le navigateur". Maintenant, la page sera ouverte sous 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.

wcb1
la source
1
maintenant, c'est la réponse qui doit être considéré comme la bonne solution! Assurez-vous de modifier le fichier applicationhost.config situé dans .vs / config si vous utilisez Visual Studio 2015.
Fabio Salvalai
1

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:

127.0.0.1 dev.example.com
::1 dev.example.com

Je l'ai compris en vérifiant à $ ping localhostpartir 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.

Morten Aslo-Petersen
la source
0

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.

<bindings> 
    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:whatever.localhost" />
</bindings>

Ensuite, allez sur http: //wwhat.localhost: 12345 / s'exécutera.

MW247
la source