su Windows Phone, posso ottenere WebException
con StatusCode == HttpStatusCode.NotFound
seCome distinguere NotFound restituito dal server e da NotFound a causa della cattiva connettività?
- server ha restituito 404
- Server non può essere trovato a causa del cattivo connettività.
Su Windows Phone WebException
lo stato è WebExceptionStatus.UnknownError
per entrambi i casi.
Come è possibile distinguere il caso 1
dal caso 2
?
Quello che osservo è quando la connettività è male (server non trovato) ResponseUri
è nullo e le intestazioni WebResponse
contengono 0
elementi.
EDIT ResponseUri
non è nullo, ma ha il suo OriginalString
vuoto
E 'sicuro per fare questo:
catch (WebException ex)
{
switch (ex.Response.StatusCode)
{
...
case HttpStatusCode.NotFound:
if (ex.Response.ResponseUri == null
|| string.IsNullOrEmpty(httpWebResponse.ResponseUri.OriginalString))
DoServerNotFound();
else
DoServerReturned404();
Sembra il modo. Inoltre, è possibile controllarlo utilizzando http://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkinterface.getisnetworkavailable.aspx –
Non è sicuro al 100% controllare GetIsNetworkAvailable in condizioni di rete non valide. Quando la richiesta di rete non è riuscita, la rete potrebbe mancare, quando gestisco WebException, la rete potrebbe essere già attiva –
Inoltre, è necessario verificare che GetIsNetworkAvailable sia true prima di eseguire una richiesta Web :) –