Tôi đang cố gắng sử dụng quy trình công việc không đồng bộ trong F # để tìm nạp một số yêu cầu web.Yêu cầu web không đồng bộ F #, xử lý ngoại lệ
Tuy nhiên, một số yêu cầu của tôi đôi khi trả lại lỗi (ví dụ: http 500) và tôi không biết cách xử lý việc này. Có vẻ như chương trình F # của tôi bị kẹt trong một vòng lặp vô hạn khi chạy trong trình gỡ rối.
Tôi có thể thiếu một số nội dung, khiến các ví dụ tôi thấy không biên dịch ra khỏi hộp. Điều đầu tiên tôi phát hiện ra rằng đã giúp được chút mã này:
type System.Net.WebRequest with
member req.GetResponseAsync() =
Async.BuildPrimitive(req.BeginGetResponse, req.EndGetResponse)
và sau đó tôi có chút tôi mã để lấy yêu cầu, mà là khá chuẩn từ các ví dụ tôi đã nhìn thấy:
let async_value = async {
let req = WebRequest.Create(url)
let! rsp = req.GetResponseAsync()
return (rsp :?> HttpWebResponse).StatusCode
}
và sau đó tôi cố gắng để có được những kết quả:
let status = Async.RunSynchronously(async_value)
Nhưng khi tôi chạy chương trình của tôi trong chương trình gỡ rối, nó phá vỡ tại req.EndGetResponse
vì máy chủ trở lại lỗi máy chủ nội bộ 500. Nếu tôi tiếp tục chỉ tiếp tục execu tion, nó được trong một vòng funky, phá vỡ tại req.EndGetResponse
(đôi khi một số liên tiếp), và tại cho status = Async.RunSynchronously
(async_value).
Làm cách nào để khắc phục sự cố ngoại lệ để tôi có thể nhận mã trạng thái của mình? Ngoài ra, tôi có cần loại điều tôi đã làm ở trên không? Hoặc tôi thiếu một số thư viện/dll cho F #/VS 2010 Beta 1, trong đó điều này đã là một phần của?
Tôi thực sự chạy một số yêu cầu song song, sử dụng Async.RunSynchronously
(Async.Parallel
(my_array_of_async_values)), mặc dù tôi không nghĩ rằng điều đó liên quan đến vấn đề ngoại lệ mà tôi đang gặp phải.
Thực tế các ví dụ tôi đã đi qua chỉ sử dụng Async.Run
hơn Async.RunSynchronously
có lẽ là một chỉ báo tôi đang thiếu một cái gì đó ... =/
Vâng, tôi thấy những gì tôi đã làm sai. Nó cũng là một phần hành vi dụng cụ (vs2010b1) liên quan đến sự kỳ quặc gỡ lỗi ngoại lệ. Tôi đã cố gắng chỉ lấy Mã trạng thái, phần duy nhất của phản hồi mà tôi thậm chí còn quan tâm, mà không xử lý ngoại lệ. – jessicah