我有一个ASP.NET web应用程序,它调用远程服务器上的web服务。我希望应用程序能够检测到由于远程服务器上的任何类型的故障而无法访问web服务的时间。
重要的是,应用程序可以区分远程服务器上的故障和由于其他情况而导致的故障。例如,它必须能够检测已经被防火墙阻止的web服务url和远程服务器上的Http服务不可用之间的区别。
有没有人能建议一种方法呢?理想情况下,解决方案将使用在HttpWebResponse对象上返回的HttpStatusCode。
发布于 2012-08-15 23:43:47
在调用远程服务器的代码周围放置一个try子句,然后捕获一个WebException。在WebException对象内部将是一个HttpWebResponse,其中包含状态代码和有关来自远程服务器的响应的其他有用信息。
try
{
var request = (HttpWebRequest)WebRequest.Create("https://remote.service.com/getdata");
request.Method = "GET";
HttpWebResponse response = request.GetResponse() as HttpWebResponse
}
catch (WebException wx)
{
HttpWebResponse webExceptionResponse = (HttpWebResponse)wx.Response;
var sr = new StreamReader(webExceptionResponse.GetResponseStream(), Encoding.UTF8);
string jsonResult = sr.ReadToEnd();
HttpStatusCode status = webExceptionResponse.StatusCode;
}
https://stackoverflow.com/questions/11468998
复制