1

我有一个 ASP.NET Web 应用程序,它调用远程服务器上的 Web 服务。我希望应用程序能够检测到由于远程服务器上的任何故障而无法访问 Web 服务的时间。

应用程序必须能够区分远程服务器上的故障和其他情况导致的故障。例如,它必须能够检测 Web 服务 url 已被防火墙阻止与远程服务器上的 Http 服务不可用之间的差异。

任何人都可以建议这样做的方法吗?理想情况下,该解决方案将使用 HttpWebResponse 对象上返回的 HttpStatusCode。

4

1 回答 1

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;
}
于 2012-08-15T23:43:46.640 回答