FTP: Errore del server remoto: (553) Nome di file non consentito
Questo errore mi è capitato utilizzando la classe FtpWebRequest di C#
L'errore si può presentare quando la url o il nome file non sono corretti o contengono caratteri non validi. Ma non era il mio caso.
Avevo una url di questo tipo:
"ftp.mio.it/Cartella1/Cartella mia"
quindi con il nome dell'ultima cartella che conteneva uno spazio, con url senza spazio funzionava correttamente. Il problema si presenta sia con il Framework 3.4 che con il 4.0.
Per risolvere il problema è sufficiente terminare la url con una slash / così:
"ftp.mio.it/Cartella1/Cartella mia/".
Ecco un esempio di codice per accedere a un FTP ed eventualmente simulare l'errore avendo un nome di cartella che contiene una spazio.
Errore del server remoto: (553) Nome di file non consentito..
e mi ha fatto perdere un po' di tempo.L'errore si può presentare quando la url o il nome file non sono corretti o contengono caratteri non validi. Ma non era il mio caso.
Avevo una url di questo tipo:
"ftp.mio.it/Cartella1/Cartella mia"
quindi con il nome dell'ultima cartella che conteneva uno spazio, con url senza spazio funzionava correttamente. Il problema si presenta sia con il Framework 3.4 che con il 4.0.
Per risolvere il problema è sufficiente terminare la url con una slash / così:
"ftp.mio.it/Cartella1/Cartella mia/".
Ecco un esempio di codice per accedere a un FTP ed eventualmente simulare l'errore avendo un nome di cartella che contiene una spazio.
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
string user = "????";
string password = "????";
//string url = new Uri("ftp://ftp.mio.it/Cartella1/Cartella mia"); // da errore
string url = new Uri("ftp://ftp.mio.it/Cartella1/Cartella mia/"); // con lo slash finale funziona
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(url);
ftp.Credentials = new System.Net.NetworkCredential(user, password);
ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
FtpWebResponse response = ftp.GetResponse() as FtpWebResponse;
string result = "";
using (StreamReader sr = new StreamReader(response.GetResponseStream(), System.Text.Encoding.ASCII))
{
result = sr.ReadToEnd();
}
Console.WriteLine(result);
}
}
}