我有一个ASP.NET Web应用程序,它调用远程服务器上的Web服务。我希望应用程序能够检测到由于远程服务器上的任何类型的故障而无法访问Web服务的时间。
应用程序必须能够区分远程服务器上的故障和其他情况导致的故障。例如,它必须能够检测到已被防火墙阻止的Web服务URL与远程服务器上的Http服务不可用之间的差异。
有人可以提出这样做的方法吗?理想情况下,解决方案将使用HttpWebResponse对象上返回的HttpStatusCode。
答案 0 :(得分:1)
在调用远程服务器的代码周围放置一个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;
}