【问题标题】:Can't start site in IIS (use by another process)无法在 IIS 中启动站点(由另一个进程使用)
【发布时间】:2013-01-02 21:09:27
【问题描述】:

当我尝试在 IIS 中启动站点时,它会显示:

该进程无法访问该文件,因为它已被另一个进程使用

我在 Google 中搜索,发现另一个站点可能一直在使用端口 80,但在 MyIIS 中我看到只有这个站点在使用端口 80。还有什么可能在使用端口 80,或者是否涉及其他问题?

【问题讨论】:

  • 重启系统一次,然后尝试。
  • 我做了但又出现同样的问题
  • 尝试将 IIS 配置为在另一个端口上运行。您的机器上可能正在运行另一台服务器。任何apache实例?也有一些蠕虫会打开端口 80 作为受感染计算机的后门。
  • 这个错误文本当然没有帮助,但是如果您检查事件查看器日志,它会提示您在绑定到端口 8080(由我的 IIS 中的网站使用)时出现错误。在我的 Windows 10 机器上,它记录了来自 IIS-W3SVCHttpEvent 源的两个错误。第二个事件日志文本 - Unable to bind to the underlying transport for [::]:8080. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine. The data field contains the error number.。 Oracle 服务正在使用端口 8080。我将网站使用的端口更改为 8081。

标签: asp.net iis


【解决方案1】:

在命令提示符中使用netstat -aonnetstat -aon | findstr 0.0:80 检查哪个进程ID 正在监听端口:80,然后在任务管理器中观察该进程ID (PID) 并检查了 view->select columns-> process id。结束该过程,重新启动 IIS,您就完成了。 (注意:如果您安装了 Skype,请先尝试退出该进程。

在现代任务管理器中,您需要转到 详细信息 选项卡来搜索 PID。或者,正如 @Nikita G 在 cmets 中提到的,您可以使用此命令从命令提示符中查找任务:

tasklist /FI "PID eq 123"

注意:用第一个命令返回的 PID 更改 123

【讨论】:

  • 也感谢您的 Skype 评论。
  • Skype 在 80 端口上运行,我的网站也在 80 端口上配置,所以我通过注销 Skype 解决了这个问题,然后我将 Skype 的设置更改为在 8080 端口上运行。(不是强制性的启动 IIS)
  • 微软产品打架的时候很有趣......直到你意识到它出于某种未知原因再次发生并且没有精力弄清楚是什么原因时不得不继续重新启动计算机(直到现在)。说真的,太烦人了。
  • 这里有一个更简单的方法。仅显示在端口 80 上侦听的项目:netstat -aon | findstr 0.0:80。然后假设返回 PID 123,运行以下命令查看是哪个进程:tasklist /FI "PID eq 123".
  • 对我来说,是 OracleServiceXE 服务占用了我的 IIIS 服务器中的新网站试图绑定到的端口 8080。
【解决方案2】:

这是因为另一个进程正在使用端口 80,它可能是您 PC 上的聊天应用程序,例如 Skype。

首先,将默认的网站端口 80 更改为某个未使用的端口(例如 8087)。要实现这一点,请右键单击应用程序,然后单击“编辑绑定”。

此端口更改后重新启动。 现在您可以确定哪个进程阻塞了 IIS 端口 80。要检查此使用 netstat 命令,该命令会显示端口的详细信息以及进程 ID。

【讨论】:

  • 这里一样,skype 使用的是 80 端口。在选项 -> 高级 -> 连接 -> “使用端口 80 和 442 进行其他...”下禁用它
【解决方案3】:

退出 Skype,然后重试。我遇到了同样的问题,我刚刚退出了 Skype,然后重置了我的 IIS。它对我有用。

【讨论】:

【解决方案4】:

您也可以运行此命令找出正在使用该端口的应用程序或服务,然后在任务管理器中跟踪它(前提是它不是 Web 部署代理服务)。

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

然后打开任务管理器,转到进程,单击“显示所有用户的进程”复选框,然后单击查看菜单并转到列,添加 PID 列。

将 netstat 命令中的进程 ID 与任务管理器中的 PID 匹配,您将找到正在使用该端口的服务或应用程序。

【讨论】:

  • 如果您不想打开任务管理器,请立即运行以下命令以查看是哪个进程:tasklist /FI "PID eq <PID from netstat (without brackets)>"
【解决方案5】:

正如其他人所说,其他可能正在使用端口 80 或 443。对我来说它是 VMWare Workstation Server,但请查看其他答案以了解如何使用 netstat。

【讨论】:

  • +1 用于提及端口 443。我使用 netstat 检查端口 80,但没有显示任何内容。然后你提到了 443 端口,它就在那里。
【解决方案6】:

我认为这个链接很好地解释和解决了这个问题http://support.microsoft.com/KB/890015

大多数时候;这是由以下两个原因之一引起的: 1)端口 80 正在被其他人使用,根据其他人的建议,您可以使用 netstat -o -n -a |findstr 0.0:80 来查看是否是这种情况。如果是,则从任务管理器中终止进程(勾选显示所有用户的进程)

2) 如果不使用端口 80,则第二个原因可能是 HTTP->Parameters 的注册表项中的 ListenOnlyList 字段中的 IP 地址无效。如果您按照链接手动设置密钥,或者实际上您可以使用(xp 和 server 2003)httpcfg delete iplisten -i ipaddress 删除无效的 IP 地址。 修改ip地址后必须重启http!

【讨论】:

  • @bummi 感谢您的评论。我现在添加了更多细节。
【解决方案7】:

就我而言,它是“Sync Share Service”(SyncShareSvc) 正在运行并使用端口 80。 不过,netstat 显示 80 是免费的。我可以让站点在另一个端口上运行,但不能在 80 上运行。如果我添加了主机名,IIS 将允许我启动该站点,但是在浏览到 localhost(或任何主机名时,我会提示进行摘要式身份验证)添加)。 IIS 中仅启用了匿名和表单身份验证...

我还发现,停止 IIS 后,http://localhost 仍然提示我进行摘要式身份验证。

解决方案 - 就我而言 - 是删除 文件和存储服务 > 文件和 iSCSI 服务 > “工作文件夹来自已安装的服务(需要重新启动)。

删除“工作文件夹”服务并重新启动后,IIS 按预期工作。

【讨论】:

    【解决方案8】:

    我的情况是安装 RD Web Access 后,原来的默认网站无法启动。删除 RD Web 访问角色仍然相同。删除端口 443 绑定解决了该问题。

    【讨论】:

      【解决方案9】:

      大多数情况下,Web 开发人员发生这种情况是 apache 的原因,所以如果你从 apache 转到配置文件!打开它并用 ctrl + f 搜索到 80 并将您将看到的 ip 更改为 8080 并将下面的句子用 80 更改为 8080 并且您需要在您的 xampp 或您当前正在使用的程序中配置它

      希望能帮到大家

      【讨论】:

      • 问题是关于 IIS,而不是 apache。
      • 是的,但是这两个程序会互相干扰,所以也许我会帮助遇到和我一样问题的人
      【解决方案10】:

      为了获得更有意义的信息,一种方法是在发出 netstat 时也获得所有权信息,以便您知道使用 80(默认 http 绑定)或 443(如果定义了 https 绑定)的进程:

       netstat -ab
      

      在我的例子中,罪魁祸首是 vmware:

      TCP 0.0.0.0:443 计算机名:0 监听
      [vmware-hostd.exe]

      netstat 可以通过管道输入 find 以搜索端口 80 或 443(例如 find ":443"),但这些特定的活动连接将显示在列表的开头,因为它们很容易看到。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-22
        • 1970-01-01
        • 2018-10-24
        • 2022-06-14
        • 2014-07-24
        • 2012-09-17
        相关资源
        最近更新 更多