95

当我尝试在 IIS 中启动一个站点时,它说:

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

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

4

10 回答 10

177

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

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

tasklist /FI "PID eq 123"

注意:123随着第一个命令返回的 PID 改变。

于 2013-01-19T04:41:37.240 回答
35

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

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

在此处输入图像描述

在此处输入图像描述

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

于 2013-01-19T04:39:59.580 回答
25

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

于 2014-01-10T05:13:49.700 回答
11

You can also run this command to find out which application or service is using the port and then trace it down in Task manager (Provided it's not the Web Deploy Agent Service).

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

Then open Task manager, go to Processes, click the "Show processes for all users" checkbox and then click the View menu and Go to the Columns, add the PID column.

Match the Process ID from the netstat command to the PID in task manager and you will find the service or application that's using the port.

于 2014-02-10T21:25:34.253 回答
2

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

于 2016-07-22T19:12:25.293 回答
1

我认为这个链接很好地解释和解决了这个问题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 地址。编辑 ipaddress 后必须重新启动 http!

于 2014-12-15T20:44:58.920 回答
0

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

于 2015-04-30T17:03:30.250 回答
0

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

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

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

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

于 2014-10-08T13:09:20.710 回答
0

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

 netstat -ab

就我而言,罪魁祸首是 vmware:

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

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

于 2018-12-30T14:12:57.150 回答
0

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

希望我能帮助你们

于 2017-09-01T13:43:27.430 回答