Iisexpressを含むMS Visual Web Developer 2010をインストールしました。
この前に、PHPアプリケーション用にxamppサーバーをインストールしていました。
Xamppを起動できるようにiisを停止するにはどうすればよいですか?同じポートを使用しているようです。これらは変更される可能性があると思いますが、他のプログラムに干渉したくはありません。それ以上に、これはよりシンプルにすべきだと思います。
ありがとう!
既定では、Visual Studioは、画面の右下にあるシステムトレイの時計にIISExpressアイコンを配置します。右クリックして、終了を選択できます。アイコンが表示されない場合は、小さな矢印をクリックして、システムトレイにアイコンの完全なリストを表示してみてください。
次に、右クリックして[終了]を選択します。
別のオプションは、プロジェクトのプロパティを変更してポートを変更することです。ソリューションのWebプロジェクトごとにこれを行う必要があります。
それでもうまくいかない場合は、タスクマネージャーを起動してIIS Express System Tray(32ビット)プロセスとIIS Express Worker Process (32ビット)。
それでも機能しない場合は、ni5ni6が指摘したように、ポート80で「Web Deployment Agent Service」が実行されています。この記事を使用して、どのプロセスがそれを使用しているかを追跡し、オフにします。
私は同じ問題に出くわしました。私の目的は、Windows 7 HomeでOracleを使用してPHPスクリプトをテストすることです。IIS7Expressをインストールしたとは思わず、Apacheをより単純なアプローチと見なしました。 IIS expressの機能を個別に検討します。
課題は、IIS7 Expressをインストールした後、ApacheインストールがIIS expressの2番目のフィドルを演奏し、Microsoftホームページを表示することでした。
ポート80の問題を次の方法で解決しました。
これは、IISExpressのStart()、Stop()、およびIsStarted()を実装する静的クラスです。ハードコードされた静的プロパティによってパラメータ化され、コマンドライン引数を介してIISExpressに呼び出し情報を渡します。 NugetパッケージMissingLinq.Linq2Managementを使用します。これは、System.Diagnostics.Processから欠落している情報、具体的には、IISExpressプロセスの複数のインスタンスを明確にするために使用できるコマンドライン引数を提供します。プロセスID。 System.Diagnostics.Processだけで同じことを達成する方法があると思いますが、寿命は短いです。楽しい。
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;
}
}