2012-04-27 26 views
6

Tôi cố gắng để sử dụng ftpWebRequest trong C# mã của tôi làsử dụng ftpWebRequest với một lỗi: máy chủ từ xa trở về lỗi 530 chưa đăng nhập

// 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(); 

và tôi nhận được một lỗi trong request.GetRequestStream(); lỗi là: máy chủ từ xa trả về lỗi 530 không đăng nhập nếu tôi cố truy cập trang trình duyệt và trong url tôi viết ftp://192.168.20.10/ trang lông mày yêu cầu tôi nhập tên và mật khẩu, tôi đặt cùng tên và mật khẩu và tôi thấy tất cả các tệp và thư mục trong thư mục ftp.

Trả lời

15

nên không phải là dòng:

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

là:

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

hay:

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

tôi phải tin rằng điều này có thể gây ra các vấn đề của bạn bởi vì \ f là một ký tự cấp dữ liệu biểu mẫu.

6

Tôi phát hiện ra rằng khi kết nối qua .NET/C# đến máy chủ FTP, một số ký tự không "hợp lệ". Sau khi thiết lập các thông tin đăng nhập để chỉ chỉ chữ và số [a-Z0-9] nó làm việc để đăng nhập

+0

Đã hoạt động! Cảm ơn – user5071155

7

Phải đối mặt với cùng một vấn đề, đây là giải pháp của tôi:.

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

chi tiết có thể được tìm thấy here

Hy vọng điều đó sẽ hữu ích.

0

Chỉ cần xóa trích dẫn kép từ tên người dùng hoặc mật khẩu vì đôi khi tên người dùng hoặc mật khẩu đăng nhập $ gây ra sự cố. Tốt của nó để sử dụng báo giá duy nhất mỗi lần.

+0

Don không đăng câu trả lời tương tự cho một số câu hỏi. Nó có lẽ tốt hơn sau đó để đánh dấu chúng là bản sao của nhau. – Jaap

+0

@Jaap cảm ơn sự hướng dẫn của bạn. –

Các vấn đề liên quan