无法在IIS中启动网站(供其他进程使用)


96

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

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

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


重新启动系统,然后尝试。
عثمانغني

我没有再次发生同样的问题

1
尝试将IIS配置为在另一个端口上运行。您的计算机上可能正在运行其他服务器。有Apache实例吗?也有一些蠕虫也将端口80打开为受感染计算机上的后门。
nunespascal

该错误文本肯定没有帮助,但是如果您查看事件查看器日志,则它会提示您绑定到端口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。–
RBT

Answers:


176

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

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

tasklist /FI "PID eq 123"

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


11
也感谢您对Skype的评论。
基思

Skype在端口80上运行,我的网站也在端口80上配置,因此我通过注销skype解决了此问题,然后我将Skype的设置更改为在端口8080上运行。(不强制启动IIS)
Umar Shafeeq

1
当Microsoft产品参与其中时,这很有趣……直到您不得不继续重启计算机,直到您意识到计算机由于某种未知原因再次发生并且还没有办法找出导致它的原因(直到现在)。说真的,很烦人。
andyface 2015年

10
这是一种更简单的方法。仅显示在端口80上监听的项目netstat -aon | findstr 0.0:80。然后假定返回PID 123,请运行以下命令查看哪个进程:tasklist /FI "PID eq 123"
Nikita G.

1
对我来说,是OracleServiceXE服务吞噬了8080端口,我的IIIS服务器中的新网站试图绑定到该端口。
RBT

35

发生这种情况的原因是使用端口80的进程不同,它可能是PC上的聊天应用程序,例如Skype。

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

在此处输入图片说明

在此处输入图片说明

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


6
skype是我的问题
nbushnell 2014年

相同的是,Skype使用的是端口80。在“选项”->“高级”->“连接”->“使用端口80和442作为附加端口...”下禁用它
Wagner da Silva


10

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

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

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

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


2
如果您要避免打开任务管理器,请在之后立即运行以下命令以查看哪个进程:tasklist /FI "PID eq <PID from netstat (without brackets)>"
Nikita G.

2

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


+1表示端口443。我netstat用来检查端口80,但未显示任何内容。然后您提到了端口443,它就在那里。
jtate

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!


@bummi感谢您的评论。我现在添加了更多细节。
stt106 2014年

0

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

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

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

删除“工作文件夹”服务并重新启动后,IIS可以正常工作。


0

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


0

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

希望我能帮助你们


问题是关于IIS,而不是apache。
C. Helling

1
是的,但是这两个程序会互相干扰,所以也许我会帮助与我有同样问题的人
Arne Schouten

0

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

 netstat -ab

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

TCP 0.0.0.0:443 ComputerName:0侦听
[vmware-hostd.exe]

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.