web-dev-qa-db-fra.com

Comment démarrer/arrêter IISExpress Server?

J'ai installé MS Visual Web Developer 2010, qui inclut iisexpress.

Avant cela, j'avais installé le serveur xampp pour mes applications php.

Je voudrais savoir comment puis-je arrêter IIS afin de pouvoir démarrer xampp? Il semble qu'ils utilisent le même port. Je suppose que ceux-ci pourraient être modifiés, mais je ne veux pas interférer avec d'autres programmes, et plus que cela, je pense que cela devrait être plus simple.

Merci!

43
Michael

Fermeture IIS Express

Par défaut, Visual Studio place l'icône IISExpress dans la barre d'état système en bas à droite de votre écran, près de l'horloge. Vous pouvez cliquer dessus avec le bouton droit et choisir quitter. Si vous ne voyez pas l'icône, essayez de cliquer sur la petite flèche pour afficher la liste complète des icônes dans la barre d'état système. 

IIS Express icon

puis faites un clic droit et choisissez Exit:

enter image description here


Changer le port

Une autre option consiste à modifier le port en modifiant les propriétés du projet. Vous devrez le faire pour chaque projet Web de votre solution.

  1. Visual Studio> Explorateur de solutions
  2. Cliquez avec le bouton droit sur le projet Web et choisissez Propriétés.
  3. Aller sur l'onglet Web
  4. Dans la section "Serveurs", modifiez le port dans la zone URL du projet.
  5. Répétez cette opération pour chaque projet Web de la solution.

Changing the IIS Express port


Si tout le reste échoue

Si cela ne fonctionne pas, vous pouvez essayer de faire apparaître le Gestionnaire des tâches et de fermer le processus IIS Express (32 bits) et IIS Processeur Express (32 bits).

Terminating the IIS Express Worker Thread process

Si cela ne fonctionne toujours pas, comme le signalait ni5ni6, un «service d'agent de déploiement Web» est exécuté sur le port 80. Utilisez cet article pour identifier le processus qui l'utilise et le désactiver:

https://sites.google.com/site/anashkb/port-80-in-use

74
msigman

Une excellente réponse donnée par msigman. Je veux juste ajouter que dans windows 10 vous pouvez trouver le processus IIS Express System Tray (32 bit) sous le processus Visual Studio:

 enter image description here

4
AlbertK

Je suis tombé sur le même problème. Mon but est de tester les scripts PHP avec Oracle sur Windows 7 Home et sans penser à installer IIS7 Express et, après coup, a considéré Apache comme une approche plus simple. Je vais explorer les capacités de IIS express séparément. 

Le défi était après l’installation d’IIS7 Express, l’installation d’Apache jouait un rôle secondaire dans IIS et l’affichage de la page d’accueil de Microsoft.

J'ai résolu le problème du port 80 en: -

  1. Arrêt de Microsoft WedMatrix: - net stop was/y
  2. Redémarrage du serveur Apache
  3. Vérifier qu'Apache écoutait maintenant sur le port: - netstat -anop
  4. Effacement des caches des navigateurs - Firefox et IE
  5. En cours d'exécution localhost 
1
James

Voici une classe statique implémentant Start (), Stop () et IsStarted () pour IISExpress. Il est paramétré par des propriétés statiques codées en dur et transmet les informations d'appel via les arguments de ligne de commande à IISExpress. Il utilise le package Nuget, MissingLinq.Linq2Management, qui fournit de manière surprenante des informations manquantes dans System.Diagnostics.Process, en particulier les arguments de ligne de commande pouvant ensuite être utilisés pour aider à comprendre les éventuelles instances multiples de processus IISExpress, car je ne conserve les identifiants de processus. Je présume qu'il existe un moyen d'accomplir la même chose avec System.Diagnostics.Process, mais la vie est courte. Prendre plaisir.

using System.Diagnostics;
using System.IO;
using System.Threading;
using MissingLinq.Linq2Management.Context;
using MissingLinq.Linq2Management.Model.CIMv2;

public static class IisExpress
{
  #region Parameters
  public static string SiteFolder = @"C:\temp\UE_Soln_7\Spc.Frm.Imp";
  public static uint Port = 3001;
  public static int ProcessStateChangeDelay = 10 * 1000;
  public static string IisExpressExe = @"C:\Program Files (x86)\IIS Express\iisexpress.exe";
  #endregion

  public static void Start()
  {
    Process.Start(InvocationInfo);
    Thread.Sleep(ProcessStateChangeDelay);
  }
  public static void Stop()
  {
    var p = GetWin32Process();
    if (p == null) return;

    var pp = Process.GetProcessById((int)p.ProcessId);
    if (pp == null) return;

    pp.Kill();
    Thread.Sleep(ProcessStateChangeDelay);
  }
  public static bool IsStarted()
  {
    var p = GetWin32Process();
    return p != null;
  }

  static readonly string ProcessName = Path.GetFileName(IisExpressExe);
  static string Quote(string value) { return "\"" + value.Trim() + "\""; }
  static string CmdLine =
    string.Format(
      @"/path:{0} /port:{1}",
      Quote(SiteFolder),
      Port
      );
  static readonly ProcessStartInfo InvocationInfo =
    new ProcessStartInfo()
      {
        FileName = IisExpressExe,
        Arguments = CmdLine,
        WorkingDirectory = SiteFolder,
        CreateNoWindow = false,
        UseShellExecute = true,
        WindowStyle = ProcessWindowStyle.Minimized
      };
  static Win32Process GetWin32Process()
  {
    //the linq over ManagementObjectContext implementation is simplistic so we do foreach instead
    using (var mo = new ManagementObjectContext())
      foreach (var p in mo.CIMv2.Win32Processes)
        if (p.Name == ProcessName && p.CommandLine.Contains(CmdLine))
          return p;
    return null;
  }
}
0
George