FtpWebRequest ServerCertificateValidationCallback никогда не вызывается

Win 7, VS2013, .NET 4.5, приложение winforms

Я пытаюсь подключиться к FTP-серверу через SSL/TLS, используя vb.net. У меня проблемы с проверкой сертификата сервера как метода ServerCertificateValidationCallback, который я использую, кажется, игнорируется, и, следовательно, соединение с сервером никогда не происходит, получая ошибку времени ожидания в строке GetResponse. Я проверил соединение на FileZilla, и оно работает, после добавления сертификата сервера как доверенного.

Ниже мой FtpWebRequest:

ServicePointManager.ServerCertificateValidationCallback = Function(obj as [object], _
cert as X509Certificate, chain as X509Chain, error as SslPolicyErrors) _
(cert.Issuer.Equals("xxxxxx"))

Dim req As System.Net.FtpWebRequest = DirectCast(WebRequest.Create(New Uri("ftp://xxx.xxx.xxx:990")), _
System.Net.FtpWebRequest)

req.EnableSsl = True
req.Credentials = New Net.Credential("user","passw")
req.UsePassive = True
req.UseBinary = True
req.Proxy = Nothing
req.Method = WebRequestMethods.Ftp.ListDirectoryDetails

Dim res As System.Net.FtpWebResponse = DirectCast(req.GetResponse(),System.Net.FtpWebResponse)

Я видел похожие темы, касающиеся HttpWebRequests, однако, похоже, здесь ничего нельзя использовать. Я также включил трассировку, чтобы увидеть, что происходит в деталях:

System.Net Information: 0 : [17056] Current OS installation type is 'Client'. 
System.Net Verbose: 0 : [17056] WebRequest::Create(ftp://xxx.xxx.xxx:990/)
System.Net Information: 0 : [17056] 
FtpWebRequest#::.ctor(ftp://xxx.xxx.xxx:990/)
System.Net Verbose: 0 : [17056] Exiting WebRequest::Create()    -> 
FtpWebRequest#
System.Net Verbose: 0 : [17056] 
ServicePoint#::ServicePoint(xxx.xxx.xxx:990)
System.Net Verbose: 0 : [17056] FtpWebRequest#::GetResponse()
System.Net Information: 0 : [17056] 
FtpWebRequest#::GetResponse(Method=LIST.)
System.Net.Sockets Verbose: 0 : [17056] 
Socket#::Socket(AddressFamily#2)
System.Net.Sockets Verbose: 0 : [17056] Exiting Socket#::Socket() 
System.Net.Sockets Verbose: 0 : [17056] 
Socket#::Socket(AddressFamily#23)
System.Net.Sockets Verbose: 0 : [17056] Exiting Socket#6::Socket() 
System.Net.Sockets Verbose: 0 : [17056] DNS::TryInternalResolve(xxx.xxx.xxx)
System.Net.Sockets Verbose: 0 : [17056] 
Socket#::Connect(xxx.xxx.xxx:990#-1234)
System.Net.Sockets Information: 0 : [17056] Socket# - Created 
connection from xxx to xxx.xxx.xxx:990.
System.Net.Sockets Verbose: 0 : [17056] Exiting Socket#::Connect() 
System.Net.Sockets Verbose: 0 : [17056] Socket#::Close()
System.Net.Sockets Verbose: 0 : [17056] Socket#::Dispose()
System.Net.Sockets Verbose: 0 : [17056] Exiting Socket#::Close() 
System.Net Information: 0 : [17056] FtpControlStream# - Created 
connection from xxx to xxx.xxx.xxx:990.
System.Net Information: 0 : [17056] Associating FtpWebRequest# with 
FtpControlStream#
System.Net.Sockets Verbose: 0 : [17056] Socket#::Receive()
The thread 0x4ff0 has exited with code 0 (0x0).
System.Net Information: 0 : [0920] ServicePoint# - Closed as idle.
System.Net.Sockets Error: 0 : [17056] 
Socket#::UpdateStatusAfterSocketError() - TimedOut
System.Net.Sockets Error: 0 : [17056] Exception in Socket#::Receive 
- A connection attempt failed because the connected party did not properly 
respond after a period of time, or established connection failed because 
connected host has failed to respond.
System.Net.Sockets Verbose: 0 : [17056] Exiting Socket#::Receive()  
-> Int32#0
System.Net.Sockets Verbose: 0 : [17056] Socket#::Dispose()
System.Net Information: 0 : [17056] FtpWebRequest#::(Releasing FTP 
connection#)
System.Net Error: 0 : [17056] Exception in 
FtpWebRequest#::GetResponse - The operation has timed out..
at System.Net.FtpWebRequest.GetResponse()
A first chance exception of type 'System.Net.WebException' occurred in 
System.dll
System.Net Verbose: 0 : [17056] Exiting 
FtpWebRequest#::GetResponse() 

Я вижу, что между FtpWebRequest и точкой обслуживания отсутствует связь. Кто-нибудь знает как это исправить? Я был бы признателен за некоторые указания или примеры кода.

0 ответов

Другие вопросы по тегам