web-dev-qa-db-fra.com

Utilisation du port 80 avec IIS Express à l'intérieur de VS2010

J'ai une application que j'essaie de faire tourner sur mon système de développement sous IIS Express de VS2010 pour lequel je dois utiliser le port 80, mais je ne parviens pas à la faire fonctionner. J'ai cherché des informations sur le port 80 réservé http://learn.iis.net/page.aspx/1005/handling-url-binding-failures-in-iis-express/

Mais même après cela, le message d'erreur vs2010 indique toujours "Impossible de lancer le IIS serveur Web Express. Le port '80' est utilisé."

Je ne sais pas quoi essayer d'autre. J'ai utilisé Process Hacker pour localiser le port 80 et il semble être utilisé par System exécuté sur le processus ID 4, qui est le processus NT Kernel et System. Je ne sais pas si cela m'empêcherait d'utiliser le port. Je pensais que c'était peut-être dû à la présence de http.sys sur ce port afin que personne d'autre ne puisse l'utiliser?

J'ai réussi à obtenir IIS Express de s'exécuter sur le port 80 en modifiant la liaison par défaut du fichier C:\Users\[MyUser]\Documents\IISExpress\config\applicationhost.config, et pendant que je peux démarrer IIS - Express manuellement de cette façon, VS obtient alors une erreur. car une liaison existe déjà sur ce port. Donc, je le reconvertis en 8080, crée le répertoire virtuel à l'aide du bouton dans VS2010 (ce qui revient à entrer dans la liaison d'un site), mais j'obtiens toujours une erreur lorsque je vais déboguer l'application. Existe-t-il quelque chose de codé en dur dans VS2010 qui l'empêche de démarrer IIS Express sur le port 80?

UPDATE & FIX: Ok, j'ai donc trouvé quelques points supplémentaires à vérifier et j'ai résolu mon problème, mais pas complètement. Un article a suggéré de s’assurer que je n’avais pas installé les services de génération de rapports SQL, car il peut surveiller le port 80, je l’avais installé mais pas plus et ce n’était pas le problème que je rencontrais. J'ai cependant réalisé que j'ai WebDeploy installé. Il était fourni avec le kit VS2010 SP1 de Web Platform Installer . Cela me convient, car je souhaite utiliser les outils clients de WebDeploy, mais il a également installé l'agent sur mon système, qui surveillait le port 80. J'ai consulté ma liste de services et arrêté le Web Deploy Agent Service. Dès que j'ai fait cela, je peux maintenant utiliser le port 80 pour IIS Express à partir de VS2010.

Nouveau problème lié à l'exécution sur le port 80 dans IIS Express Toutefois, mon application est une application MVC3 et j'ai rencontré un problème car le MVC3 ne capturait pas ma demande à tout, donc cela ne déclenche pas les actions de mon contrôleur ou quoi que ce soit du genre, mais un fichier txt à la racine de mon application peut être atteint, donc je sais que c'est mon site que IIS Express est en train de servir. Quiconque a des problèmes d’exécution d’un MVC3 (je ne sais pas s’il est exclusif à MVC3 ou non) dans IIS Express sur le port 80?

31
Nick Albrecht

dans mon cas, j'ai résolu le problème en arrêtant "SQL Server Reporting Services"

vous pouvez le trouver dans

panneau de commande -> sevices

4
Nour Sammour

MERCI beaucoup pour votre découverte du service 'Web Deploy Agent'! C’est quelque chose qui n’a été activé que récemment, car tout cela fonctionnait parfaitement et, tout juste aujourd’hui, la version mise à jour de IIS Express et le même problème concernant le port 80. Alors, maintenant que j’ai éteint le Agent Web Deploy, mon système fonctionne à nouveau correctement.

En ce qui concerne ASP.NET MVC3, cela fonctionne très bien pour les ports 80 et 443. La liaison de ces deux ports était assez fastidieuse pour que IIS Express puisse les utiliser en tant qu’utilisateur normal (la plupart à partir du lien que vous avez posté ci-dessus), et pour installer le certificat SSL que nous utilisons. J'ai créé manuellement toutes les entrées dans mon fichier applicationhost.config pour que cela fonctionne, et la section des sites appropriés est ci-dessous:

    <sites>
        <site name="PHP: A Main" id="2144116512">
            <application path="/">
                <virtualDirectory path="/" physicalPath="C:\var\www\amain\www" />
                <virtualDirectory path="/images" physicalPath="C:\var\www\images" />
            </application>
            <application path="/admin">
                <virtualDirectory path="/" physicalPath="C:\var\www\amain\www\admin" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:80:test.amainhobbies.com" />
                <binding protocol="https" bindingInformation="*:443:test.amainhobbies.com" />
            </bindings>
        </site>
        <siteDefaults>
            <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
            <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
        </siteDefaults>
        <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
        <virtualDirectoryDefaults allowSubDirConfig="true" />
    </sites>

Notez que mon site est un site combiné PHP et ASP.NET MVC3, car nous sommes en train de réécrire le tout pour qu'il s'exécute sur ASP.NET MVC3, de sorte que la plus grande partie du site est encore PHP mais ASP.NET MVC3 est en cours d'exécution dans de nombreux nouveaux projets, qui fonctionnent pour moi.

Est-ce que votre IIS Express fonctionne correctement avec MVC3 en dehors de Visual Studio, ou est-ce que le logiciel MVC3 ne fonctionne tout simplement pas?

3
Kendall Bennett

Cette solution m'a aidé.

Sous Windows 7 ou Windows Vista, à partir d'une invite de commande avec privilèges élevés, exécutez la commande suivante: Console

netsh http add urlacl url=http://localhost:80/ user=everyone

Cette commande permettra à toute application d'utilisateur (y compris vos propres instances IIS Express) de s'exécuter à l'aide du port 80 sans nécessiter de privilèges d'administrateur. Pour limiter cet accès à vous-même, remplacez "tout le monde" par votre identité Windows.

Extrait de cette source -> https://docs.Microsoft.com/en-us/iis/extensions/using-iis-express/handling-url-binding-failures-in-iis-express

0
Aliaksandr Naidzenka

L'agent Web Deploy n'est pas installé, mais j'ai rencontré ce problème. Vous pouvez également résoudre ce problème en exécutant cette commande pour savoir quelle application ou quel service utilise le port, puis faire un suivi dans le gestionnaire de tâches.

netstat -o -n -a | findstr 0.0: 80

Ouvrez ensuite le Gestionnaire des tâches, accédez à Processus, cochez la case "Afficher les processus pour tous les utilisateurs", puis cliquez sur le menu Affichage et accédez à Colonnes, ajoutez la colonne PID.

Faites correspondre l'ID de processus de la commande netstat au PID dans le gestionnaire de tâches et vous trouverez le service ou l'application utilisant le port.

0
Bikey