使用WebClient无法连接到远程服务器

时间:2019-04-15 12:48:39

标签: c# ftp

我尝试了以下所有可以想到的变化。

 client.Credentials = new NetworkCredential(ftpInfo.ftpUserName, ftpInfo.ftpPassWord);
            client.BaseAddress = "ftp://99.999.9.99";
            var response = client.UploadFile("testFile.txt", "C:\\ftproot\\testfile\\012\\Drop\\testFile.txt");

我知道用户名和密码正确。 如果我从同一框中使用filezilla连接到服务器,则它可以正常工作。

我尝试不使用ftp:// -我必须缺少一些非常简单的内容。

这是错误: {“无法连接到远程服务器”}

  • 响应{System.Net.FtpWebResponse} System.Net.WebResponse {System.Net.FtpWebResponse}
  • ContentType'($ exception).Response.ContentType'引发了类型为'System.NotImplementedException'字符串{System.NotImplementedException}
  • 的异常。

更新: 我不知道这个问题出了什么问题。我已经提供了尽可能多的信息。

这是当前使用注释中一些建议的测试。

        using (WebClient client = new WebClient())
        {
            client.Credentials = new NetworkCredential("password", "loginname");
            client.UploadFile("ftp://99.999.6.130/testFile.txt", "STOR", "c:\\testfile.txt");

        } 

那只是说我还没有登录。

以下内容正在运行。...当我允许时,我将结束该问题。

最终更新-工作解决方案:

public static bool UploadFile(string url, string userName, string password, string file,
                              out string statusDescription)
    {
        try
        {
            var request = (FtpWebRequest)WebRequest.Create(url);
            request.Method = WebRequestMethods.Ftp.UploadFile;

            request.Credentials = new NetworkCredential(userName, password);

            // Copy the entire contents of the file to the request stream.
            var sourceStream = new StreamReader(file);
            var fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
            sourceStream.Close();
            request.ContentLength = fileContents.Length;
            var getResponse = request.GetResponse();

            Console.WriteLine($"{fileContents.Length} {getResponse} ");

1 个答案:

答案 0 :(得分:0)

以下是可行的解决方案。

公共静态布尔UploadFile(字符串url,字符串userName,字符串密码,字符串文件,                                   输出字符串状态说明)         {             尝试             {                 var request =(FtpWebRequest)WebRequest.Create(url);                 request.Method = WebRequestMethods.Ftp.UploadFile;

            request.Credentials = new NetworkCredential(userName, password);

            // Copy the entire contents of the file to the request stream.
            var sourceStream = new StreamReader(file);
            var fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
            sourceStream.Close();
            request.ContentLength = fileContents.Length;
            var getResponse = request.GetResponse();

            Console.WriteLine($"{fileContents.Length} {getResponse} ");