2013-03-08 32 views
6

Tôi đang sử dụng các phương pháp sau đây để xem nội dung của một thư mục:Đang kết nối đến cùng một Server với tên người dùng khác nhau

private void TestFtp() 
{ 
    try 
    { 
     // List all of the files from FTP 
     FtpWebRequest ftprequest = (FtpWebRequest)WebRequest.Create(new Uri("ftp://m3database/recover/")); 

     ftprequest.Credentials = new NetworkCredential("myusername1", "********"); 

     ftprequest.Method = WebRequestMethods.Ftp.ListDirectory; 
     ftprequest.UsePassive = false; 
     ftprequest.Proxy = null;    

     using (var resp = ftprequest.GetResponse()) 
     { 
      StreamReader reader = new StreamReader(resp.GetResponseStream()); 

      MessageBox.Show(reader.ReadToEnd()); 
     } 
    } 
    catch (Exception e) 
    { 
     MessageBox.Show(e.Message); 
    } 
} 

Tôi đang kết nối đến một máy chủ Linux đơn thông qua FTP. Tôi đang sử dụng thông tin đăng nhập cho myusername1myusername2 để kết nối.

tôi có thể liệt kê nội dung thư mục khi sử dụng chức năng này nếu tôi đang sử dụng myusername1 thông tin, tuy nhiên nếu tôi sử dụng myusername2 nó đi kèm với các lỗi sau:

The remote server returned an error: (503) Bad sequence of commands.

Những điều mà tôi đã cố gắng:

  1. Tôi đã thử đặt ftprequest.KeepAlive = false.
  2. Tôi đã thử sử dụng tất cả các hoán vị của UsePassive, Proxy, v.v.
  3. Tôi có thể kết nối với cả hai tên người dùng bằng cách sử dụng FileZilla WITH FTP an toàn được bật và cả hai đều hoạt động. Nếu không có FTP được kích hoạt, sẽ không kết nối.

Thật lạ khi mã của tôi sẽ kết nối bằng cách sử dụng myusername1 mà không bật SSL trong mã của tôi.

Nói tóm lại:

  • myusername1myusername2 sẽ không kết nối trên FileZilla FTP mà không an toàn được kích hoạt.
  • myusername1 hoạt động trong phương pháp C# của tôi mà không bật ftprequest.EnableSsl.
  • myusername2 sẽ không hoạt động trong phương pháp C# của tôi bất kể có bật ftprequest.EnableSsl hay không.
  • Ngoại lệ được kích hoạt trên dòng tuyên bố using() của tôi.

Cái gì khác tôi chỉ nhận thấy, khi tôi di chuột qua ftprequest của tôi, nó cho thấy một NotSupportedException, nhưng điều này dường như không phân biệt trong đó tập hợp các thông tin tôi sử dụng

Nếu tôi di chuột qua ban đầu ftprequest của tôi khi sử dụng myusername2, nó cho thấy một ngoại lệ ném trước using() tôi:

enter image description here

+1

FtpWebRequest.ContentType được ghi chép lại như mọi khi ném một NotSupportedException, do đó có lẽ không có nhiều ý nghĩa. Tôi chỉ có thể nghĩ sử dụng WireShark để xem điều gì đang xảy ra trên dây. –

+0

câu hỏi chính là .. làm các tập tin chuyển giao thành công? – MethodMan

+0

Tôi có thể liệt kê các nội dung thư mục bằng cách sử dụng 'myusername1', nhưng không phải' myusername2', mặc dù nó là cùng một máy chủ. – Luke

Trả lời

0

Đây có thể là một shot trong bóng tối, nhưng có bạn đã thử sử dụng một CredentialCache?

 System.Net.NetworkCredential nc = new System.Net.NetworkCredential("user", "password"); 
     System.Net.CredentialCache cc = new System.Net.CredentialCache(); 
     cc.Add(new Uri("ftp://m3database"), "Basic", nc); 
     System.Net.FtpWebRequest ftprequest = (System.Net.FtpWebRequest)System.Net.WebRequest.Create("ftp://m3database/recover/"); 
     ftprequest.Credentials = cc; 
     ftprequest.Method = System.Net.WebRequestMethods.Ftp.ListDirectory; 

     using (var resp = ftprequest.GetResponse()) 
      { 
       StreamReader reader = new StreamReader(resp.GetResponseStream()); 

       MessageBox.Show(reader.ReadToEnd()); 
      } 
     } 

Trustcache cũng cung cấp cho bạn một loạt các tùy chọn nhập xác thực ("NTLM", "Digest", "Kerberos", "Negotiate" ...).

More đây ->http://msdn.microsoft.com/en-us/library/59x2s2s6.aspx

0

I'm connecting to a single Linux server via FTP.

CHMOD các perms trên FTP server/thư mục cho người dùng thứ 2, họ sẽ có giống như người dùng 1st.

CHMOD 777 sẽ cho phép truy cập cần thiết ..

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