Giả sử tôi tạo và thực hiện một System.Net.FtpWebRequest
.Bắt một WebException cụ thể (550)
Tôi có thể sử dụng catch (WebException ex) {}
để xem bất kỳ ngoại lệ nào liên quan đến web được gửi bởi yêu cầu này. Nhưng nếu tôi có một số logic mà tôi chỉ muốn thực hiện khi ngoại lệ được ném do (550) file not found
?
Cách tốt nhất để làm điều này là gì? Tôi có thể sao chép thông báo ngoại lệ và kiểm tra tính bình đẳng:
const string fileNotFoundExceptionMessage =
"The remote server returned an error: (550) File unavailable (e.g., file not found, no access).";
if (ex.Message == fileNotFoundExceptionMessage) {
Nhưng về mặt lý thuyết, dường như thông báo này có thể thay đổi trên đường.
Hoặc, tôi chỉ có thể kiểm tra xem thông báo ngoại lệ có chứa "550" hay không. Cách tiếp cận này có thể có khả năng hoạt động tốt hơn nếu thông báo được thay đổi (nó có thể vẫn chứa "550" ở đâu đó trong văn bản). Nhưng tất nhiên thử nghiệm như vậy cũng sẽ trả về true nếu văn bản cho một số khác WebException
chỉ xảy ra có chứa "550".
Có vẻ như không phải là phương pháp để truy cập chỉ số của ngoại lệ. Điều này có thể không?
Bắt một 'WebException' sẽ chỉ cung cấp cho bạn một' Status' của ** ProtocolError **. Bạn cần phải cast ex.Response vào một HttpWebResponse như trong câu trả lời ở trên để lấy mã mong muốn (ví dụ: 404, 500). – ProKiner