2009-06-28 25 views

Trả lời

12

Chỉ cần thực hiện cuộc gọi hợp lệ tới dịch vụ web. Nếu nó hết thời gian, hoặc bạn gặp lỗi 404, dịch vụ web sẽ không khả dụng.

4

Hãy thử sử dụng nó. Nếu nó hoạt động, sau đó nó có sẵn. Nếu không, thì nó không phải là (hoặc bạn có vấn đề kết nối mạng giữa bạn và máy chủ). Không có phép thuật ở đây.

5

Bạn có thể thử phương pháp này ..

public bool IsAddressAvailable(string address) 
    { 
     try 
     { 
      using(System.Net.WebClient client = new WebClient()) 
      { 
       client.DownloadData(address); 
       return true; 
      } 
     } 
     catch 
     { 
      return false; 
     } 
    } 

... và gọi nó là như thế này ...

MessageBox.Show(IsAddressAvailable("http://localhost/my.webservices/mywebservice.asmx").ToString()); 
+0

Tôi thích điều này (và đã sử dụng nó, cảm ơn!) Nhưng sẽ gợi ý bạn thêm câu lệnh USING khi bạn khởi tạo đối tượng khách hàng. Đặc biệt vì đây là một ping sẽ được sử dụng rất nhiều, điều quan trọng là nó được xử lý. –

+1

Đúng. Tôi sẽ cập nhật câu trả lời của tôi một cách thích hợp. – lkg

1

Cuối cùng tôi Wrote mã này trong Delphi Net

function WebService_OnLine(UrlWebService:String): Boolean; 
Var 
urlCheck : uri; 
request : WebRequest; 
response : WebResponse; 
begin 
MemoLogWebService.Lines.Add('Testing WebService'); 
urlCheck := Uri.Create(UrlWebService); 
request  := WebRequest.CreateDefault(urlCheck); 
request.Timeout := 20000; 
    try 
     response :=request.GetResponse(); 
     MemoLogWebService.Lines.Add(response.Headers.ToString); 
     Result:=True; 
    except 
     on E : Exception do 
     Begin 
     MemoLogWebService.Lines.Add(E.Message); 
     Result:=False; 
     End; 
    end; 
End; 

PS: Cảm ơn bạn rất nhiều vì đã cho tôi cảm hứng.

+1

Bạn nên thu hẹp bẫy ngoại lệ của mình thành ngoại lệ dựa trên giao tiếp. Bạn hiếm khi nếu bao giờ muốn bẫy ngoại lệ vì đó có thể là một lỗi thảm khốc ngoài các ngoại lệ dựa trên truyền thông. –

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