net mywebclient mvc method example downloaddata c# exception-handling webclient downloadfile webexception

mywebclient - webclient c# example download file



Manejando dos WebException''s apropiadamente (1)

Basado en este artículo de MSDN , podría hacer algo en las siguientes líneas:

try { // try to download file here } catch (WebException ex) { if (ex.Status == WebExceptionStatus.ProtocolError) { if (((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.NotFound) { // handle the 404 here } } else if (ex.Status == WebExceptionStatus.NameResolutionFailure) { // handle name resolution failure } }

No estoy seguro de que WebExceptionStatus.NameResolutionFailure sea ​​el error que está viendo, pero puede examinar la excepción que se produce y determinar qué es WebExceptionStatus para ese error.

Estoy tratando de manejar dos WebException diferentes correctamente.

Básicamente se manejan después de llamar a WebClient.DownloadFile(string address, string fileName)

AFAIK, hasta ahora hay dos que tengo que manejar, ambos de WebException :

  • El nombre remoto no se pudo resolver (es decir, no hay conectividad de red para acceder al servidor para descargar el archivo)
  • (404) Archivo no nound (es decir, el archivo no existe en el servidor)

Puede haber más, pero esto es lo que he encontrado más importante hasta ahora.

Entonces, ¿cómo debo manejar esto correctamente, ya que ambos son WebException , pero quiero manejar cada caso anterior de manera diferente.

Esto es lo que tengo hasta ahora:

try { using (var client = new WebClient()) { client.DownloadFile("..."); } } catch(InvalidOperationException ioEx) { if (ioEx is WebException) { if (ioEx.Message.Contains("404") { //handle 404 } if (ioEx.Message.Contains("remote name could not") { //handle file doesn''t exist } } }

Como puede ver, estoy verificando el mensaje para ver qué tipo de WebException es. ¿Asumiría que hay una manera mejor o más precisa de hacer esto?

Gracias