場景還原:我們的一位客戶做了一個商城網站,測試階段結束后,發現數據量比較大,于是客戶購買了一臺獨立的服務器來托管。服務器用了已經有大半年了,之前一切順利,最近出現FTP軟件無法連接服務器,一連接就出現提示:服務器無法識別命令。請使用原始 ftp HELP來識別服務器所支持的所有命令。相關的錯誤命令是:500 Invalid PORT Command。經過與服務器供應商和機房溝通均未解決,于是求助于我們,在技術員的幫助下,客戶服務器最終完美解決了這個問題。
問題關鍵:500 Invalid PORT Command的中文意思是端口不可用,可能是因為某種原因導致之前的端口號被不明原因的禁用,所以只需要更換端口號就可以解決問題。
解決方法:
1.到服務器的IIS的FTP中修改網站默認的端口號,例如:4722
2.到服務器的防火墻中,添加兩個例外端口號,例如:4721、4722
3.開啟剛剛添加的這兩個端口號,在開始→運行中輸入cmd回車,分別輸入以下兩行代碼并執行。
cd c:InetpubAdminScripts
adsutil.vbs set /MSFTPSVC/PassivePortRange "4721-4722"
如果在執行第二條代碼時出現this script does not work with wscript等類似錯誤提示,則需要在前面加cscript.exe,然后重新執行!
this script does not work with wscript
Object required
ErrNumber:424(0x1A8)
to run this script using cscript,type:"CScript.exe adsutil.vbs",
如遇錯誤不能執行,則請直接使用以下代碼替換第二條代碼并重新執行。
cscript.exe adsutil.vbs set /MSFTPSVC/PassivePortRange "4721-4722"
設置完成后,重啟一下IIS即可。
4.最后在FTP軟件中重新設置剛剛重新分配的端口號,數據連接類型建議使用PASV,部分FTP軟件中叫做“被動防火墻”設置。
在網上看了一下,還沒有發現有比較完整的解決方案,而問題解決過程略顯復雜,因此我們特地將這個問題的解決方法整理出來,方便大家也方便我們自己以后參考。