13 de diciembre de 2010

C#, Manejo de WebException. Error en el servidor remoto: (500) Error interno del servidor.

Recientemente, mientras hacia una petición POST (.Net C#) a una URL determinada, me estaba encontrando con el siguiente error:

WebException, ProtocolError

ex.Message: Error en el servidor remoto: (500) Error interno del servidor.

Error 500

Este es un error genérico que aporta casi nada de información y que por consiguiente poco puedo obtener para solucionar el problema.

Solución Manejo WebException

Para obtener más información de este tipo de error, puedes hacer lo siguiente:

private string Test(HttpWebRequest request)
{
  string responseText = string.Empty;
  try
  {
    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    {
      //...
    }
  }
  catch (WebException wex)
  {
    StringBuilder sb = new StringBuilder();
    sb.AppendLine("ERROR:" + wex.Message + ". STATUS: " + wex.Status.ToString());
 
    if (wex.Status == WebExceptionStatus.ProtocolError)
    {
      var response = ((HttpWebResponse)wex.Response);
      sb.AppendLine(string.Format("Status Code : {0}", response.StatusCode));
      sb.AppendLine(string.Format("Status Description : {0}", response.StatusDescription));
 
      try
      {
       StreamReader reader = new StreamReader(response.GetResponseStream());
        sb.AppendLine(reader.ReadToEnd());
      }
      catch (WebException ex) { throw; }
    }
 
    throw new Exception(sb.ToString(), wex);
  }
  catch (Exception ex) { throw; }
 
  return responseText;
}

Y de esta forma podrás leer la información relacionada al error.

11 comentarios:

  1. ELMAH, se acabó el abuso (lo mejor que existe para el log de excepciones)

    ResponderEliminar
  2. estoy intentando hacer la comprobación, pero no logro llevarla a cabo.
    soy novato en esto y pretendo realizar la comprobación con un botón, pero no logro invocarla.
    si me pudieseis ayudar...
    gracias

    ResponderEliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  4. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  5. estoy usando el metodo mencionado para verificar mas acerca del error, pero aun me sigue marcando error de servidor remoto: 500 error interno de servidor estatus code : protocolError
    esto me lo ocasiona la siguiente linea de codigo:
    WebResponse response =request.GetResponse();
    ayuda soy novato en esto. Gracias de antemano

    ResponderEliminar
  6. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  7. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  8. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  9. estoy usando el metodo mencionado para verificar mas acerca del error, pero aun me sigue marcando error de servidor remoto: 500 error interno de servidor estatus code : protocolError
    esto me lo ocasiona la siguiente linea de codigo:
    WebResponse response =request.GetResponse();
    ayuda soy novato en esto. Gracias de antemano

    ResponderEliminar
  10. estoy usando el metodo mencionado para verificar mas acerca del error, pero aun me sigue marcando error de servidor remoto: 500 error interno de servidor estatus code : protocolError
    esto me lo ocasiona la siguiente linea de codigo:
    WebResponse response =request.GetResponse();
    ayuda soy novato en esto. Gracias de antemano

    ResponderEliminar