2009-12-15 29 views
6

Nếu tôi sử dụng System.Net.FtpWebRequest để tải tệp lên máy chủ vsftpd, tôi có cần sử dụng GetResponse để kiểm tra xem tệp có được tải lên chính xác không? Hoặc tôi có được ngoại lệ cho mọi lỗi không? Tôi nên kiểm tra điều gì trong số System.Net.FtpWebResponse?Cách kiểm tra lỗi FtpWebRequest

Trả lời

6

Yeah, bạn muốn lấy các đối tượng FTPWebResponse từ đối tượng yêu cầu ... như thế này:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri); 
request.Method = WebRequestMethods.Ftp.UploadFile; 

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

byte[] fileraw = File.ReadAllBytes("CompleteLocalPath"); 

try 
{ 
    Stream reqStream = request.GetRequestStream(); 

    reqStream.Write(fileraw, 0, fileraw.Length); 
    reqStream.Close(); 
} 
catch (Exception e) 
{ 
    response = (FtpWebResponse) request.GetResponse(); 
    // Do something with response.StatusCode 
    response.Close(); 
} 

Bạn sẽ muốn kiểm tra Ftp.WebResponse.StatusCode.

Có một vài thành viên trong Mã trạng thái có thể được trả về, vì vậy việc kiểm tra lại có thể phức tạp.

Dưới đây là một danh sách các mã/mô tả mà có thể được trả lại:

FtpStatusCode

EDIT: Nếu có điều gì sai trái với một chuyển nó nên ném một ngoại lệ khi bạn cháy lên một nhà văn suối. Những gì bạn có thể làm là quấn thử tất cả, và nếu có điều gì đó sai, bạn sẽ có thể lấy mã trạng thái và in nó ra bất cứ phương tiện nhật ký nào bạn đang sử dụng để bạn có thể thấy vấn đề cụ thể là gì. Tôi đã sửa đổi mã ở trên để phản ánh tất cả điều này (Chỉ sử dụng một cách để chuyển, bạn có thể sử dụng mã của riêng mình).

+0

Tôi nên kiểm tra những gì trong FtpWebResponse? Cung cấp các máy chủ FTP khác nhau kết quả khác nhau? Kết quả sau đó có thể vsftpd cho? – magol

+0

Bạn có thể kiểm tra xem FtpStatusCode có nhỏ hơn 300 không? – magol