Exceptiones con servicios web ¿SoapException?

25/08/2004 - 13:01 por Diego F. | Informe spam
Hola, estoy buscando información sobre controlar exceptiones en servicios
web.

Hasta ahora, en aplicaciones Windows, cuando controlo excepciones dentro de
un método, lo que hago es simplemente:

try
{
// código a controlar
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}

El problema es que esto no lo puedo hacer dentro de un método web, porque no
puedo mostrar una ventana con el mensaje. He buscado y he encontrado
referencias a SoapExceptions, pero no he visto código sencillo de cómo
usarlas.

¿Me podéis ayudar con ésto?


Saludos,

Diego F.
 

Leer las respuestas

#1 Alejandro Perez
25/08/2004 - 15:40 | Informe spam
Como estas Diego?

Ok, como bien sabes, los Web Services no tienen interfaz
de usuario. Esto quiere decir que al momento de ocurrir un
error, no puedes hacer, como bien mencionaste tu, un
Message Box para retornarle el error al usuario. Ahora
bien, entonces como se manejan las excepciones?

La comunicacion de un webservice se realiza mediante un
protocolo llamado SOAP. Y esta comunicacion no es mas que
data XML de un lado al otro. Las excepciones generadas por
un Web Service son enviadas al cliente que esta realizando
la solicitud mediante un "fault" SOAP.

Un fault es simplemente un elemento XML como este: <Fault>
que va junto con ese mensaje SOAP y que indica el error
ocurrido.

Ahora bien, en realidad nosotros nunca vamos a estar en
contacto directo con ese elemento Fault, sino que vamos a
trabajar con el mismo manejo de excepciones que utilizamos
para otro tipo de aplicaciones. Esto quiere decir que en
determinado momento podemos arrojar una excepcion desde un
Web Service, por ejemplo:

if (s == null)
{
throw(new ArgumentNullException());
}

Y ASP.NET se va a encargar de serializar la excepcion en
un elemento fault, dentro de ese mensaje SOAP que viaja al
cliente.

Cuando llega al cliente, ese mensaje es deserializado y el
elemento fault es convertido a una excepcion SOAPException
(Hay entra lo que tanto haz leido por ahi :p), y los
detalles de la excepcion los encontraras en la propiedad
Message.

Asi, de esta manera, desde tu aplicacion cliente. Por
ejemplo una aplicacion ASP.NET, puedes atrapar ese error
con un simple try - catch.

try
{
MiWebServices.Sumar();
}
catch (SoapException error)
{
Response.Write("Error");
}

Espero te sirva de ayuda la explicacion...


Alejandro Perez
MCSD/MCDBA/MCT
Caracas - Venezuela






Hola, estoy buscando información sobre controlar


exceptiones en servicios
web.

Hasta ahora, en aplicaciones Windows, cuando controlo


excepciones dentro de
un método, lo que hago es simplemente:

try
{
// código a controlar
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}

El problema es que esto no lo puedo hacer dentro de un


método web, porque no
puedo mostrar una ventana con el mensaje. He buscado y he


encontrado
referencias a SoapExceptions, pero no he visto código


sencillo de cómo
usarlas.

¿Me podéis ayudar con ésto?


Saludos,

Diego F.



.

Preguntas similares