Manejo de transacciones OnLine/OffLine utilizando SoapExtension

26/04/2007 - 18:46 por Esteban Yanson | Informe spam
Quiero saber si existe alguna forma de abortar un request a un web service
desde adentro de un SoapExtension pero sin que me genere una excepción como
lo hace el método "SoapClientMessage.Client.Abort"

Ejemplo:
- La aplicación cliente llama al método "XXX" de un web service.
- Se invoca el método en la clase proxy.
- Se invoca el método ProcessMessage de la clase derivada de SoapExtension.
- Alli adentro yo determino si estoy OnLine u OffLine con el server. En el
caso de estar OnLine sigue el proceso normalmente. En el caso de estar
OffLine quiero poder guardar el Xml en una base local, abortar la llamada al
server y responderle a la aplicación cliente que terminó todo bien.

El problema es que la única forma de abortar la conexión con el servidor es
con "SoapClientMessage.Client.Abort" pero este método me genera una excepción
por que así esta programado el framework.
Yo no quiero que me genere la excepción por que no quiero que la aplicación
cliente se entere de que hay o no conexión. Quiero que sea transparente.

Intenté cambiar la url para que apunte a una local, pero fue inútil por que
la propiedad es readonly.

Alguien tiene idea que se puede hacer?
Se les ocurre otra alternativa?

Gracias !
 

Leer las respuestas

#1 Daniel A. Calvin
27/04/2007 - 20:36 | Informe spam
Hola Esteban

Podrías hacerlo escribiendo tu propio proxy y trapeando esas exceptions que
no quieres que lleguen a la aplicación principal.

La froma mas facil es generar el proxy desde linea de comando, modificarlo
según tu necesidad y que tu aplicación referencie este proxy y no el genrado
automaticamente por visual studio.

De esa forma tenés mucho mas control de la situación.

Es bastante simple de hacer, preguntame si hay algo que no explique
claramente.
Daniel A. Calvin
MCP


"Esteban Yanson" wrote:

Quiero saber si existe alguna forma de abortar un request a un web service
desde adentro de un SoapExtension pero sin que me genere una excepción como
lo hace el método "SoapClientMessage.Client.Abort"

Ejemplo:
- La aplicación cliente llama al método "XXX" de un web service.
- Se invoca el método en la clase proxy.
- Se invoca el método ProcessMessage de la clase derivada de SoapExtension.
- Alli adentro yo determino si estoy OnLine u OffLine con el server. En el
caso de estar OnLine sigue el proceso normalmente. En el caso de estar
OffLine quiero poder guardar el Xml en una base local, abortar la llamada al
server y responderle a la aplicación cliente que terminó todo bien.

El problema es que la única forma de abortar la conexión con el servidor es
con "SoapClientMessage.Client.Abort" pero este método me genera una excepción
por que así esta programado el framework.
Yo no quiero que me genere la excepción por que no quiero que la aplicación
cliente se entere de que hay o no conexión. Quiero que sea transparente.

Intenté cambiar la url para que apunte a una local, pero fue inútil por que
la propiedad es readonly.

Alguien tiene idea que se puede hacer?
Se les ocurre otra alternativa?

Gracias !

Preguntas similares