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!
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.
puis faites un clic droit et choisissez Exit:
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.
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).
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:
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: -
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;
}
}