【发布时间】:2011-11-21 18:50:13
【问题描述】:
我想通过带有自定义端口号的 ssl 或带有隐式 SSL 的 FTP 将文件上传和下载到 FTP。 我为此使用.net ftpwebrequest & ftpwebresponse 方法。 这是我的代码:
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
它给了我错误:
操作已超时
这适用于普通 ftp 和 ssl 上的 ftp,但不适用于自定义端口号或隐式 ssl。
你能告诉我.net 是否支持这个?
或者我必须为这种情况使用其他方法
谢谢,
赫曼特
【问题讨论】:
-
Hemant 请编辑您的问题,显示您的代码和错误详细信息。这里没有水晶球 ;-)
-
@Davide 感谢您的回复。这是我的代码 ::: 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 'callback End If Dim streamResponse As Stream streamResponse = reqObj.GetRequestStream()
-
编辑问题,将代码放入问题中,格式与代码一样好
-
@DavidePiras 感谢您的回复。我已经改变了问题。
-
快速谷歌搜索显示不。FtpWebRequest 不支持隐式 SSL。至于端口,我们使用21,所以我在构建URI(使用UriBuilder)创建FtpWebRequest时将其设置为21。 stackoverflow.com/questions/1842186/…