“另一个程序正在使用此文件,进程无法访问”的解决方法
启动IIS时提示“另一个程序正在使用此文件,进程无法访问。(异常来自HRESULT:0x80070020)”
(the process cannot access the file because it is being used by process. )
非常典型的端口冲突所致,一般IIS7都是80端口的,但是会有哪些进程会利用80端口呢?
解决方法:
IIS中网站服务所占用的是80端口,出现这样的提示我们可以判定是端口冲突造成的,故,查看真正运行的占用80端口的程序,在“运行”输入“cmd”,进入命令行,输入netstat -abn > c:/port80.txt此命令既是查询当前运行的程序所占用的端口状况,然后到c盘port80.txt文件中找到占用80端口的程序pid,记下pid。打开任务管理器,点击“查看”,选择列,勾选“PID(进程标识符)”,然后单击“进程”标签,找到80端口对应的pid,就可以看到是那个程序占用的了,更改这个程序的port,再重启这个程序,使更改生效。
再次启动iis,一切ok。
备注:
查看80端口信息中的PID号,然后打开任务管理器查看对应PID的程序名称。
(如果没有PID列可以点击“查看”->选择列...->勾选Pid进程标识符->确定)
将所有开启在后台的进程一一关闭,特别指出的是“Foxmail”以及“淘宝旺旺”这两款软件估计也会占用80端口,除此之外,其实还有很多第三方的程序喜欢占用80端口,比如迅雷下载以及skype有时会占用80端口,且当迅雷下载占用80端口下载时速率会大幅提升,也许是微软的盖茨先生刻意把80端口做的“与众不同”,也许这也是那些第三方的软件喜欢占用80端口的原因
解决方法二:
IIS “另一个程序正在使用此文件,进程无法访问。”错误提示的解2010-06-07 09:23 来源: 作者: 点击:49964次用IIS管理器启动网站时,出现“另一个程序正在使用此文件,进程无法访问。”的错误提示。说明 此服务器的tcp 80端口已打开。一般情况下,可能是有另一个WEB服务已启动,它打开了80端口,另一种可能就是某个软件打开了80端口。
如何查看哪个程序打开了tcp 80端口呢?使用“开放端口查看软件Active ports”就可以一目了然了。我查看了一下我的机器情况,如图所示:
从图上看出原来Skype打开了Tcp 80端口,原来是这个家伙惹的祸,将其关闭。再重启IIS,一切正常。
如果在IIS启动之后再开Skype,Skype仍能正常使用。说明Skype发现tcp 80端口已打开就不再使用此端口了。看来启动IIS还得有个顺序,那就是先启动IIS再启动Skype。
补充:其实Skype可以通过设置不让其打开80端口的。这样就不用考虑启动顺序的问题了。具体操作是:Skype 菜单"工具"->"选项"->"连接" 项,去掉“把80端口和443端口作为接入设备的备用端口” 前面的复选框!
脚本之家编辑补充:
如果上面的方法还不能解决,下面是个不错的处理方法:
win2003下测试。
看下么的图。
上面的图说明了,我虽然修改了端口,但因为主机头绑定了域名仍然使用的是80端口,所以不能使用,只要将绑定的域名端口修改一下,或删除都可以解决。
其实这个方法的解决,一般不注意的不可能发现这个问题的。其实事件查看器,也是可以帮助我们解决不少问题的。
开始--程序--管理工具--事件查看器--系统 查找 “w3svc”即可。