在 Windows Phone 上,我可以使用 StatusCode == HttpStatusCode.NotFound
获取 WebException
if
- 服务器返回 404
- 由于连接不良,无法找到服务器。
在 Windows Phone 上,对于这两种情况,WebException
的状态都是 WebExceptionStatus.UnknownError
。
如何区分案例 1
和案例 2
?
我观察到的是当连接不良时(未找到服务器)ResponseUri
为空并且 WebResponse
的 header 包含 0
项。
编辑
ResponseUri
不为空,而是其 OriginalString
为空
这样做安全吗:
catch (WebException ex)
{
switch (ex.Response.StatusCode)
{
...
case HttpStatusCode.NotFound:
if (ex.Response.ResponseUri == null
|| string.IsNullOrEmpty(httpWebResponse.ResponseUri.OriginalString))
DoServerNotFound();
else
DoServerReturned404();
最佳答案
为什么不使用 NetworkInterface.GetIsNetworkAvailable()
在进行网络调用之前查看是否存在事件的网络连接。否则,您最终会无所事事,浪费了一个电话。如果有连接但调用仍然失败,您就知道这是 Web 服务的问题。
我在我的应用程序中使用它,如果没有连接,我不会费心打电话。
谢谢
最大
关于c# - 如何区分从服务器返回的 NotFound 和由于连接不良导致的 NotFound?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12951610/