Exception "the requested uri is invalid for this ftp command"
Bonjour à tous,
Je viens à vous pour un problème qui commence à me courir sérieusement.
Voilà la situation, pour le moment, tous les jours, je remonte via Filezilla, à la main, un fichier csv sur ma bécane, généré par un script .Net, sur un serveur FTP.
Je voulais automatiser ça, mais j'obtiens l'eexception suivante:
Citation:
The requested uri is invalid for this ftp command
Avec le code ci-dessous:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
// appel
uploadFile("ftp://monServeur/", "c:/monFichier.csv");
// fonction
public void uploadFile(String pRemoteServerURI, String pLocalFileUri)
{
Uri remoteServerURI = new Uri(pRemoteServerURI);
Uri localFileUri = new Uri(pLocalFileUri);
Stream sr = null;
FileStream fs = null;
if (remoteServerURI.Scheme != Uri.UriSchemeFtp)
{
Console.WriteLine("<<< EXCEPTION : C'est pas du FTP");
}
else
{
if (localFileUri.Scheme != Uri.UriSchemeFile)
{
Console.WriteLine("<<< EXCEPTION : C'est pas un fichier local");
}
else
{
try
{
FtpWebRequest fwr = (FtpWebRequest)WebRequest.Create(remoteServerURI);
fwr.Method = WebRequestMethods.Ftp.UploadFile;
NetworkCredential cred = new NetworkCredential("monUser", "monPass");
fwr.Credentials = cred;
sr = fwr.GetRequestStream();
fs = File.Open(localFileUri.OriginalString, FileMode.Open);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, (int)fs.Length);
sr.Write(buffer, 0, (int)fs.Length);
sr.Close();
FtpWebResponse fwp = (FtpWebResponse)fwr.GetResponse();
}
catch (Exception ex)
{
Console.WriteLine("<<< EXCEPTION : " + ex.Message);
}
finally
{
if (sr != null)
{
sr.Close();
}
if (fs != null)
{
fs.Close();
}
}
}
}
} |
Le duo user/mot de passe est bon, le fichier est bien à l'adresse indiquée.
Quand je me logge sur filezilla, dans host, je mets juste "monServeur". Mais si je ne mets que ça dans la chaine pour appeler ma fonction, ça m'envoie direct une URIFormatException. Et ceci dès la première ligne de la fonction, celle-ci:
Code:
Uri remoteServerURI = new Uri(pRemoteServerURI);
Comment je peux faire pour contourner ce problème? Quelqu'un a une idée?
Merci d'avance!