问题
I am trying to use the ftpWebRequest in c# my code is
// 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();
and I get an Error in request.GetRequestStream(); the error is: the remote server returned error 530 not logged in if I try to go in to a browser page and in the url I write ftp://192.168.20.10/ the brows page is asking me for a name and password, I put the same name and password and I see all the files and folders in the ftp folder.
回答1:
Shouldn't the line:
request.Credentials = new NetworkCredential("dev\ftp", "devftp");
be:
request.Credentials = new NetworkCredential("dev\\ftp", "devftp");
or:
request.Credentials = new NetworkCredential(@"dev\ftp", "devftp");
I have to believe this may be causing your issues because the \f is a form feed character.
回答2:
Faced the same issue, here's my solution:
request.Credentials = new NetworkCredential(
usernameVariable.Normalize(),passwordVariable.Normalize(),domainVariable.Normalize());
Details can be found here
Hope it helps.
回答3:
I found out that when connecting via .NET/C# to a FTP-server some characters are not "valid". After setting the login credentials to only only letters and numbers [a-Z0-9] it worked to log in.
回答4:
Just remove the double quote from username or password because sometimes $ sign in username or password causes problem. Its good to use single quote every time.
回答5:
If you assume anonymous logon do not set network credentials. this was the root of my problems.
来源:https://stackoverflow.com/questions/10352165/using-ftpwebrequest-with-an-error-the-remote-server-returned-error-530-not-logg