8

我正在尝试在 c# 中使用 ftpWebRequest 我的代码是

// Get the object used to communicate with the server.
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://192.168.20.10/file.txt");
            request.Method = WebRequestMethods.Ftp.UploadFile;

            // This example assumes the FTP site uses anonymous logon.
            request.Credentials = new NetworkCredential("dev\ftp", "devftp");

            // Copy the contents of the file to the request stream.
            StreamReader sourceStream = new StreamReader(@"\file.txt");
            byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
            sourceStream.Close();
            request.ContentLength = fileContents.Length;
            request.UsePassive = true;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContents, 0, fileContents.Length);
            requestStream.Close();

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();

            Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);

            response.Close();

我在 request.GetRequestStream(); 中得到一个错误 错误是:远程服务器返回错误 530 not logged in 如果我尝试进入浏览器页面并且在 url 我写ftp://192.168.20.10/浏览页面 要求我输入名称和密码,我输入相同的名称和密码,我可以看到 ftp 文件夹中的所有文件和文件夹。

4

5 回答 5

18

不应该:

request.Credentials = new NetworkCredential("dev\ftp", "devftp");

是:

request.Credentials = new NetworkCredential("dev\\ftp", "devftp");

或者:

request.Credentials = new NetworkCredential(@"dev\ftp", "devftp");

我必须相信这可能会导致您的问题,因为 \f 是换页符。

于 2012-05-07T13:04:24.370 回答
10

面对同样的问题,这是我的解决方案:

request.Credentials = new NetworkCredential(
    usernameVariable.Normalize(),passwordVariable.Normalize(),domainVariable.Normalize());

详细信息可以在这里找到

希望能帮助到你。

于 2013-06-26T04:20:27.360 回答
7

我发现当通过 .NET/C# 连接到 FTP 服务器时,某些字符不是“有效的”。将登录凭据设置为仅包含字母和数字 [a-Z0-9] 后,它可以登录。

于 2012-11-13T10:33:59.697 回答
0

只需从用户名或密码中删除双引号,因为有时 $ 登录用户名或密码会导致问题。每次都使用单引号很好。

于 2017-08-24T10:42:51.660 回答
0

如果您假设匿名登录,请不要设置网络凭据。这是我问题的根源。

于 2019-09-11T13:55:49.817 回答