FtpWebRequest FtpWebResponse debug

martedì 24 ottobre 2006 - 17.01

cris1771 Profilo | Newbie

Ciao a tutti

Ho un problema quando faccio il debug di un'applicazione che va ad aprire vari account FTP usando System.Net e FtpWebRequest FtpWebResponse. Ho creato una classe ClienteFtp che contiene vari metodi, ad es ListDirectory:

Public Function ListDirectory(ByVal PathDir As String) As String
'Lista delle cartelle presenti
Dim ListString As String = ""
Dim sr As StreamReader
Dim PathCompleto As String

ListDirectory = ""
sr = Nothing
ObjLog = New GenericLogClass
Try
PathDir = NormalizzaPathRemoto(PathDir)
PathCompleto = "ftp://" & HostFtp & PathDir
'Istanziare FtpWebRequest
FtpReq = CType(WebRequest.Create(PathCompleto), FtpWebRequest)
'Ftp use passive
FtpReq.UsePassive = False
'Passaggio di user e password
FtpReq.Credentials = New NetworkCredential(UserFtp, PswFtp)
'Richiesta di elenco cartelle
FtpReq.Method = WebRequestMethods.Ftp.ListDirectory
'Ottenimento risposta
FtpRes = CType(FtpReq.GetResponse(), FtpWebResponse)
sr = New StreamReader(FtpRes.GetResponseStream(), System.Text.Encoding.ASCII)
ListString = sr.ReadToEnd

If ListString.Length > 0 Then
If InStrRev(ListString, vbCrLf) = (ListString.Length - vbCrLf.ToString.Length + 1) Then
'Togliere vbCrLf dalla fine della stringa
ListString = Left(ListString, ListString.Length - (vbCrLf.ToString.Length))
End If
ObjLog.ScriviFileLog("ListDirectory" & "|" & PathDir & "|" & ListString, My.Application.Info.AssemblyName)
End If
Return ListString

Catch ex As WebException
'Scrivere il valore dell'exception nel log file
ObjLog.ScriviFileLog("ListDirectory|" & ex.ToString, My.Application.Info.AssemblyName & "_excpt")
ObjLog.ScriviFileLog("ListDirectory|" & "Errore FTP " & HostFtp & " " & UserFtp, My.Application.Info.AssemblyName)
Finally
If Not sr Is Nothing Then
sr.Close()
sr = Nothing
End If
'In ogni caso chiudere FtpRes
If Not FtpRes Is Nothing Then
FtpRes.Close()
FtpRes = Nothing
End If
FtpReq = Nothing
ObjLog = Nothing
End Try
End Function

Chiamando tale metodo dalla Sub Main() passandogli direttamente dei valori dopo aver istanziato la classe ClienteFtp ed avergli passato host, user e psw. Chiamando il metodo
ListDirectory("NomeCartellaFtp") funziona, mentre chiamando lo stesso metodo con una variabile, ad es
Dim VariabileFtp as string
VariabileFtp="NomeCartellaFtp"
...
ListDirectory(VariabileFtp)
...

si verifica un errore all'esecuzione dell'istruzione
FtpRes = CType(FtpReq.GetResponse(), FtpWebResponse)

e il messaggio dell'exception è "System.Net.WebException: Impossibile effettuare la connessione al server remoto.
in System.Net.FtpWebRequest.GetResponse()
in ExtractorDebug.ClienteFtp.ListDirectory(String PathDir)" riferimento alla riga FtpRes = CType(FtpReq.GetResponse(), FtpWebResponse)

Ho controllato il valore della variabile che è corretto.

Qualcuno può darmi qualche suggerimento per risolvere il problema?

Al momento sto eseguento il debug dell'applicazione che è di tipo Console di Windows come se fosse un'applicazione web.

Grazie

Cris

Brainkiller Profilo | Guru

Francamente credo che il problema sia altrove.
Se usi un certo nome di folder uguali nei due esperimenti non può darti due esiti diversi. Cioè il passaggio di una variabile a un costruttore a un metodo non può influire in questo modo sull'esecuzione dello stesso.
Prova a controllare bene.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5