“另一個程序正在使用此文件,進程無法訪問”的解決方法
啟動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”即可。