FTP télécharger le fichier demandé de commande FTP n'est pas pris en charge lors de l'utilisation d'un proxy HTTP
Quelqu'un peut s'il vous plait regardez le code ci-dessous et dites-moi ce que je fais de mal. Je vais dans les cercles,,, tous les pointeurs grandement apprécié
public class FtpWebRequestUtil
{
private static string RemoteHost;
private static string RemoteFtpPath;
public static NetworkCredential Credential = new NetworkCredential();
public FtpWebRequestUtil()
{
}
public FtpWebRequestUtil(string RemoteAddress, string RemotePath, string RemoteUser, string RemotePwd)
{
Credential.UserName = RemoteUser;
Credential.Password = RemotePwd;
RemoteHost = RemoteAddress;
RemoteFtpPath = RemotePath;
}
public string UploadFile(string localFilePath)
{
int startTime = Environment.TickCount;
//Console.WriteLine("Uploading File " + localFilePath);
try
{
FileInfo localFile = new FileInfo(localFilePath); //e.g.: c:\\Test.txt
byte[] buf = new byte[2048];
int iWork;
string remoteFile = "ftp://" + RemoteHost + "/" + RemoteFtpPath + "/" + localFile.Name;
FtpWebRequest req = (FtpWebRequest) FtpWebRequest.Create(remoteFile);
//req.Proxy =
req.Credentials = Credential;
//FtpWebRequest req = (FtpWe
req.UseBinary = true;
req.KeepAlive = true;
req.Method = WebRequestMethods.Ftp.UploadFile;
StreamWriter myStreamWriter = new StreamWriter(req.GetRequestStream());
myStreamWriter.Write(new StreamReader("TestFiles\\" + localFile.Name).ReadToEnd());
myStreamWriter.Close();
FtpWebResponse myFtpWebResponse = (FtpWebResponse) req.GetResponse();
Console.WriteLine("Upload File Complete, status: " + myFtpWebResponse.StatusDescription);
myFtpWebResponse.Close();
return "SUCCESS";
}
catch (Exception ex)
{
Console.WriteLine("There was an error connecting to the FTP Server.");
Console.WriteLine(ex.Message);
throw ex;
}
Console.WriteLine("Time taken for downloading file is " + (Environment.TickCount - startTime).ToString());
return "FAILURE";
}
************************ *********************************
FtpWebRequestUtil ftpClient = new FtpWebRequestUtil(FtpUrl, InputFolder, FtpUser, FtpPassword);
try
{
Thread.Sleep(5000);
ftpClient.UploadFile(UploadingFileName);
}
catch (Exception exception)
{
Assert.Fail(exception.Message);
}
finally
{
ftpClient = null;
}
}
}
- quelle est l'erreur ?
- commande ftp pas pris en charge lors de l'utilisation d'un proxy http
Vous devez vous connecter pour publier un commentaire.
Il s'avère que seul le
RETR
,LIST
, etNLST
méthodes sont pris en charge parSystem.Net.FtpWebRequest
lorsqu'unHTTP
proxy est configuré et qu'il n'a pas d'importance que vous n'êtes pas la fixation d'un proxy dans votre code: si unHTTP
proxy (pasFTP
proxy) est configuré dans les paramètres proxy du système (à savoir : Options Internet\Connexions\configuration LAN\Serveur Proxy\ Utiliser un serveur proxy pour votre réseau local), alors vous obtiendrez ce message d'erreur lorsque vous essayez de charger leFTP
serveur.La solution de contournement est d'utiliser IE pour modifier les paramètres du système pour désactiver l'utilisation de la
HTTP
proxy. Toutefois, si vous avez accès au code affecté la solution est de définir laProxy
propriété de la demande pour les nuls, par exemple:Les exceptions en lui-même est la réponse - il n'est pas pris en charge. Probablement que vous avez quelques proxy HTTP qui empêche la connexion directe au serveur FTP. Selon MS documentation, si le proxy est un proxy HTTP, seul le DownloadFile, ListDirectory, et ListDirectoryDetails commandes sont prises en charge - si UploadFile ne l'est pas.