2011-09-21 30 views
1

我想通過帶有自定義端口號的SSL或使用隱式SSL的FTP將文件上載和下載到FTP。 我正在使用.net ftpwebrequest &爲此的ftpwebresponse方法。 這裏是我的代碼:使用自定義端口號發送文件通過SSL的FTP

Dim reqObj As FtpWebRequest = CType(WebRequest.Create(_Url + filename), FtpWebRequest) 
reqObj.Method = WebRequestMethods.Ftp.UploadFile 
reqObj.KeepAlive = False 
If _IsSSLEnable Then 
reqObj.UseBinary = True 
End If 
reqObj.Credentials = New NetworkCredential(_UserName, _Password) 
If _IsSSLEnable Then 
reqObj.EnableSsl = _IsSSLEnable Net.ServicePointManager.ServerCertificateValidationCallback = AddressOf validateCert 
End If 
Dim streamResponse As Stream 
streamResponse = reqObj.GetRequestStream() 

我在此之後收到錯誤......

服務器響應PASV命令比對作出該FTP連接地址不同的返回地址。

但是,如果我加入

reqObj.UsePassive = False 

它給我的錯誤:

The operation has timed out

這個工作正常進行正常的FTP和基於SSL的FTP,但不能爲自定義端口號或隱含的SSL。

你能告訴我嗎.net支持?

或者我必須使用另一種方法對於這種情況

感謝,

與Hemant

+0

Hemant請編輯您的問題,顯示您的代碼和錯誤的詳細信息。沒有水晶球在這裏;-) –

+0

@Davide感謝您的答覆。我的代碼::: Dim reqObj As FtpWebRequest = CType(WebRequest.Create(_Url + filename),FtpWebRequest) reqObj.Method = WebRequestMethods.Ftp。 UploadFile reqObj.KeepAlive =假 如果_IsSSLEnable然後 reqObj.UseBinary =真 結束如果 reqObj.Credentials =新的NetworkCredential(_username,_password) 如果_IsSSLEnable然後 reqObj.EnableSsl = _IsSSLEnable Net.ServicePointManager.ServerCertificateValidationCallback = AddressOf validateCert'callback End If Dim streamResponse As Stream streamResponse = req Obj.GetRequestStream() – hemant

+0

編輯問題把代碼放在問題和格式很好,因爲代碼請 –

回答

1

有一個非常類似的問題已經在SO:Set Port number when using FtpWebRequest in C#

它看起來像解決方案是這個:

yourFtpWebRequest.UsePassive = false; 

b請檢查該問題並回答以獲取更多詳細信息。

+0

感謝您的回覆。 我已經做了這些改變,但我的問題沒有解決。 在我的情況下,有不同的是,當我試圖通過FileZilla連接它連接到特定的端口不是端口21。 謝謝, Hemant – hemant

+0

也爲一個Ftp over ssl它給了我這個錯誤。在這裏沒有特定的端口。服務器返回一個地址,以響應PASV命令,該地址與FTP連接的地址不同。 – hemant

+0

你是如何創建請求的?你應該這樣做:FtpWebRequest request =(FtpWebRequest)WebRequest.Create(「ftps:// [host]:[PortNumber]/[filename.ext]」); ... –