如何启动/停止 IIS Express 服务器?

Posted

技术标签:

【中文标题】如何启动/停止 IIS Express 服务器?【英文标题】:How do I start/stop IIS Express Server? 【发布时间】:2012-04-14 21:20:57 【问题描述】:

我已经安装了包含 IIS Express 的 MS Visual Web Developer 2010。

在此之前,我已经为我的 php 应用程序安装了 XAMPP 服务器。

我想知道如何停止 IIS 才能启动 XAMPP?看来他们使用相同的端口。我想这些可以改变,但我不想干扰其他程序,而且我认为这应该更简单。

谢谢!

【问题讨论】:

我遇到了同样的问题,发现在80端口上运行了“Web部署代理服务”。使用这篇文章追踪哪个进程使用它,并将其关闭:@987654321 @ 【参考方案1】:

关闭 IIS Express

默认情况下,Visual Studio 会将 IISExpress 图标按时钟放置在屏幕右下方的系统托盘中。您可以右键单击它并选择退出。如果您没有看到该图标,请尝试单击小箭头以查看系统托盘中的完整图标列表。

然后右键单击并选择退出:


更改端口

另一种选择是通过修改项目属性来更改端口。您需要为解决方案中的每个 Web 项目执行此操作。

    Visual Studio > 解决方案资源管理器 右键单击 Web 项目并选择“属性” 转到网络标签 在“服务器”部分,更改项目 URL 框中的端口 对解决方案中的每个 Web 项目重复


如果所有其他方法都失败

如果这不起作用,您可以尝试调出任务管理器并关闭 IIS Express 系统托盘(32 位)进程和 IIS Express 工作进程(32 位)。

如果还是不行,如 ni5ni6 指出的那样,80 端口上运行着一个“Web 部署代理服务”。使用这篇文章来追踪使用它的进程,并将其关闭:

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

【讨论】:

感谢您的建议,但我仍然无法启动 Apache。 执行 CTRL ALT DEL 并确保所有以 IISexpress 开头的线程都已终止。有时,辅助线程会卡住而无法关闭。 也这样做了,但没有成功。我将更改我更熟悉的 Apache 的默认 80 端口。谢谢! @Radu 嗨,你搞定了吗?如果您觉得我的回答有帮助,请标记为已接受。如果没有,请告诉我如何进一步帮助您。谢谢! 您好,我已经更改了 apache 配置以使其监听 localhost:81 而不是 localhost:80。您的建议是合乎逻辑的,但当时对我不起作用。我只是将 :80 重置为我的 apache 的端口,按时钟从 incon 退出。仍然无法正常工作..我尝试过 CRTL ALT DEL,但我没有看到 iis express 或相关的任何进程。如果我将 :81 用于 apache,它不会打扰我,但为了帮助其他人,我的解决方法不是一个选项,告诉我应该是什么进程的名称,所以我尝试停止它。感谢您的善意和耐心!【参考方案2】:

msigman 给出了一个很好的答案。我只想补充一点,在 windows 10 中,您可以在 Visual Studio 进程下找到 IIS Express System Tray (32 bit) 进程:

【讨论】:

【参考方案3】:

打开任务管理器并终止这两个进程。他们将自动启动备份。 然后再次尝试调试您的项目。

【讨论】:

给这家伙一枚奖章。谢谢!【参考方案4】:

我遇到了同样的问题。我的目标是在 Windows 7 Home 上使用 Oracle 测试 PHP 脚本,而无需考虑安装 IIS7 express,事后考虑将 Apache 视为一种更简单的方法。我将分别探讨 IIS express 的功能。

挑战在于,在安装 IIS7 express 之后,Apache 安装是 IIS express 的第二把交椅,并打开了 Microsoft 主页。

我通过以下方式解决了端口 80 问题:-

    停止 Microsoft WedMatrix :- net stop was /y 重新启动 Apache 服务器 验证 Apache 现在正在监听端口:- netstat -anop 清除浏览器缓存 - Firefox 和 IE 运行本地主机

【讨论】:

【参考方案5】:

这是一个为 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;
  

【讨论】:

【参考方案6】:

您可以停止任何 IIS Express 应用程序,也可以停止所有应用程序。右键单击位于任务栏右下角的 IIS express 图标。然后选择显示所有应用程序

【讨论】:

【参考方案7】:

手动停止 IIS:

    进入开始菜单 输入 IIS

您会得到管理器(Internet 信息服务 (IIS) 管理器的搜索结果,在其右侧有重新启动/停止/启动按钮。

如果您不希望 IIS 在启动时启动,因为它真的很烦人..:

    转到开始菜单。 点击控制面板。 点击程序。 打开或关闭 Windows 功能 等到列表加载完毕 搜索 Internet 信息服务 (IIS)。 取消选中该框。 等待更改完成。 重新启动计算机,但信息框会再次告诉您这样做(如果您愿意,可以将其留到以后)。

哦,IIS 和 xampp 基本上做同样的事情,只是方式有点不同。而且,如果您的项目中有 Xampp,那么如果您从不使用它,那么将其保留下来也不是那么必要。

【讨论】:

不幸的是,问题是关于 IIS Express :-( 你所解释的过程是关于重新安装IIS,与问题无关。 这些说明用于卸载 IIS。问题只是停止 IIS Express

以上是关于如何启动/停止 IIS Express 服务器?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式启动和停止IIS Express

HTTPS 停止使用 IIS express

Visual Studio 和 IIS Express 随机停止工作

解决node+express在linux上关闭服务器服务就停止的问题(非PM2)

Visual Studio 2013 如何在停止调试Web程序后阻止IIS Express关闭

命令行启用IIS Express