Problemas con un WS y tratamiento de excepciones

02/12/2004 - 18:00 por Tako | Informe spam
Hola grupo

Tengo un problemilla que me está haciendo pensar muy seriamente en el
retiro de la informática, no se si es un error mío, del SPS, de los
Webservices o un bug del Framework, pero como en el fondo está el SPS lo
mando aquí de momento a ver si entre sufridos programadores del SPS
encontramos una solución.

Explico la situación:

Cliente (C) que llama a un Webservice (WS)
WS que llama a una dll (DLL)
DLL que hace trabajos contra el SPS, uno de estos trabajos es crear
un sitio nuevo

El problema se da cuando el usuario no tiene permisos para crear un
sitio, entonces debería de suceder

La DLL casca por que no tiene permisos, la DLL captura la excepción,
deja constancia en un fichero de logs y la relanza.
El WS captura esa excepción relanzada y devuelve el string "error"
El cliente recibe la cadena "error" y hace lo que deba de hacer.

El problema es que el cliente en lugar de recibir la cadena recibe un
error 401 de acceso no autorizado a la página en lugar de "error", el
problema es que el WS SI que trata bien la excepción y devuelve "error".

He estado mirando el código depurándolo y a base de logs y sucede esto:

try
llamada a la dll
catch ex as exception
aquí entra
finally
aquí también
end try

aquí ya no llega


Vamos, que parece que no llega a salir nunca del try.

La verdad es que no le veo sentido.

A ver si alguien me puede echar una mano.

Graciassss

Preguntas similare

Leer las respuestas

#1 Gustavo
02/12/2004 - 21:35 | Informe spam
Hola amigo,
Algo no entiendo bien: el try/catch que cuentas al final es el try/catch del
dll? Yo creo que ese es el unico que te puede dar un 401 (asumiendo que no
tienes alguna autenticacion rara en el WebService).
Recuerda que SPS cuando comete un error muchas veces no devuelve
directamente una exception, sino que te manda a una pagina error.aspx, que es
lo que puede estar pasando aqui (directamente desde el finally hacia el
error.aspx con una redireccion, de tal forma que nunca vas mas alla en el
codigo).
Es una idea...
Saludos,
Gustavo


"Tako" wrote:


Hola grupo

Tengo un problemilla que me está haciendo pensar muy seriamente en el
retiro de la informática, no se si es un error mío, del SPS, de los
Webservices o un bug del Framework, pero como en el fondo está el SPS lo
mando aquí de momento a ver si entre sufridos programadores del SPS
encontramos una solución.

Explico la situación:

Cliente (C) que llama a un Webservice (WS)
WS que llama a una dll (DLL)
DLL que hace trabajos contra el SPS, uno de estos trabajos es crear
un sitio nuevo

El problema se da cuando el usuario no tiene permisos para crear un
sitio, entonces debería de suceder

La DLL casca por que no tiene permisos, la DLL captura la excepción,
deja constancia en un fichero de logs y la relanza.
El WS captura esa excepción relanzada y devuelve el string "error"
El cliente recibe la cadena "error" y hace lo que deba de hacer.

El problema es que el cliente en lugar de recibir la cadena recibe un
error 401 de acceso no autorizado a la página en lugar de "error", el
problema es que el WS SI que trata bien la excepción y devuelve "error".

He estado mirando el código depurándolo y a base de logs y sucede esto:

try
llamada a la dll
catch ex as exception
aquí entra
finally
aquí también
end try

aquí ya no llega


Vamos, que parece que no llega a salir nunca del try.

La verdad es que no le veo sentido.

A ver si alguien me puede echar una mano.

Graciassss




Respuesta Responder a este mensaje
#2 Tako
02/12/2004 - 23:16 | Informe spam
"Gustavo" wrote in message
news:
Hola amigo,



¿Amigo?¿Eso significa que puedo tratarte de tu en lugar de usted? Es que
estas cosas mejor se confirman por que las deidades tienes a veces muy mala
leche :)

Algo no entiendo bien: el try/catch que cuentas al final es el try/catch
del
dll? Yo creo que ese es el unico que te puede dar un 401 (asumiendo que no
tienes alguna autenticacion rara en el WebService).



No, es el control de errores que hay en el WS, básicamente la DLL
relanza la excepción y la capturo con ese bloque en el WS para devolver las
cadenas "ok" u "error" (y alguna cosilla más que no viene a cuento)

Recuerda que SPS cuando comete un error muchas veces no devuelve
directamente una exception, sino que te manda a una pagina error.aspx, que
es
lo que puede estar pasando aqui (directamente desde el finally hacia el
error.aspx con una redireccion, de tal forma que nunca vas mas alla en el
codigo).



Si, algo de ese estilo había pensado, pero no encuentro sentido a
algunas cosas: ¿por que el código siguiente al try no se ejecuta?¿por que si
estoy accediendo vía el modelo de objetos al SPS me tiene que redireccionar
a ninguna lado?

Es decir: ahora parece que: la DLL peta, el WS captura la excepción pero
una vez se acaba el bloque del try en lugar de seguir ejecutando el código
el propio WS hace un redirect a una página de error 401.

Es que no tiene sentido ¿cómo es posible que el SPS corte la ejecución
de código por que le de la real gana?¿y por que esa redirección justo al
salir del try?

De todas formas se me ha ocurrido una cosa: mañana pongo el WS en sitio
nuevo del IIS que no tenga nada que ver con el SPS, a ver que demonios
sucede pero aquí no tendría que haber redirecciones extrañas por parte del
SPS por que no esta ejecutandose en él...

Ya contare mañana, muchas gracias por la ayuda

Es una idea...
Saludos,
Gustavo


"Tako" wrote:


Hola grupo

Tengo un problemilla que me está haciendo pensar muy seriamente en el
retiro de la informática, no se si es un error mío, del SPS, de los
Webservices o un bug del Framework, pero como en el fondo está el SPS lo
mando aquí de momento a ver si entre sufridos programadores del SPS
encontramos una solución.

Explico la situación:

Cliente (C) que llama a un Webservice (WS)
WS que llama a una dll (DLL)
DLL que hace trabajos contra el SPS, uno de estos trabajos es
crear
un sitio nuevo

El problema se da cuando el usuario no tiene permisos para crear un
sitio, entonces debería de suceder

La DLL casca por que no tiene permisos, la DLL captura la excepción,
deja constancia en un fichero de logs y la relanza.
El WS captura esa excepción relanzada y devuelve el string "error"
El cliente recibe la cadena "error" y hace lo que deba de hacer.

El problema es que el cliente en lugar de recibir la cadena recibe un
error 401 de acceso no autorizado a la página en lugar de "error", el
problema es que el WS SI que trata bien la excepción y devuelve "error".

He estado mirando el código depurándolo y a base de logs y sucede
esto:

try
llamada a la dll
catch ex as exception
aquí entra
finally
aquí también
end try

aquí ya no llega


Vamos, que parece que no llega a salir nunca del try.

La verdad es que no le veo sentido.

A ver si alguien me puede echar una mano.

Graciassss




Respuesta Responder a este mensaje
#3 Tako
03/12/2004 - 10:57 | Informe spam
Tako wrote:
"Gustavo" wrote in message
news:

Recuerda que SPS cuando comete un error muchas veces no devuelve
directamente una exception, sino que te manda a una pagina
error.aspx, que es
lo que puede estar pasando aqui (directamente desde el finally hacia
el error.aspx con una redireccion, de tal forma que nunca vas mas
alla en el codigo).





He estado mirando a base de snniffer y efectivamente parece que se hace
un redirect a una página de error, francamente me está tocando la moral el
asunto este, usease:

La DLL genera un error de seguridad
El WS trata ese error

Pero el SPS cuando el WS acaba de tratar ese error en lugar de seguir
con el código parece que automáticamente hace un redirect a otra página
ajena al WS y da un pete de conexión.

Los WebService tienen una propiedad que se llama AllowAutoRedirect pero
parece que no es efectivo para esto por que solo sirve para los errores
300...

¿alguien sabe como solucionar este comportamiento?¿es un bug?¿es un
feacture?¿está el mundo contra mi?

Si alguien tiene alguna sugerencia lo agradeceré enormemente


Si, algo de ese estilo había pensado, pero no encuentro sentido a
algunas cosas: ¿por que el código siguiente al try no se ejecuta?¿por
que si estoy accediendo vía el modelo de objetos al SPS me tiene que
redireccionar a ninguna lado?

Es decir: ahora parece que: la DLL peta, el WS captura la
excepción pero una vez se acaba el bloque del try en lugar de seguir
ejecutando el código el propio WS hace un redirect a una página de
error 401.

Es que no tiene sentido ¿cómo es posible que el SPS corte la
ejecución de código por que le de la real gana?¿y por que esa
redirección justo al salir del try?

De todas formas se me ha ocurrido una cosa: mañana pongo el WS en
sitio nuevo del IIS que no tenga nada que ver con el SPS, a ver que
demonios sucede pero aquí no tendría que haber redirecciones extrañas
por parte del SPS por que no esta ejecutandose en él...

Ya contare mañana, muchas gracias por la ayuda

Es una idea...
Saludos,
Gustavo


"Tako" wrote:


Hola grupo

Tengo un problemilla que me está haciendo pensar muy seriamente
en el retiro de la informática, no se si es un error mío, del SPS,
de los Webservices o un bug del Framework, pero como en el fondo
está el SPS lo mando aquí de momento a ver si entre sufridos
programadores del SPS encontramos una solución.

Explico la situación:

Cliente (C) que llama a un Webservice (WS)
WS que llama a una dll (DLL)
DLL que hace trabajos contra el SPS, uno de estos trabajos
es crear
un sitio nuevo

El problema se da cuando el usuario no tiene permisos para
crear un sitio, entonces debería de suceder

La DLL casca por que no tiene permisos, la DLL captura la
excepción, deja constancia en un fichero de logs y la relanza.
El WS captura esa excepción relanzada y devuelve el string
"error" El cliente recibe la cadena "error" y hace lo que deba
de hacer.

El problema es que el cliente en lugar de recibir la cadena
recibe un error 401 de acceso no autorizado a la página en lugar de
"error", el problema es que el WS SI que trata bien la excepción y
devuelve "error".

He estado mirando el código depurándolo y a base de logs y
sucede esto:

try
llamada a la dll
catch ex as exception
aquí entra
finally
aquí también
end try

aquí ya no llega


Vamos, que parece que no llega a salir nunca del try.

La verdad es que no le veo sentido.

A ver si alguien me puede echar una mano.

Graciassss
Respuesta Responder a este mensaje
#4 Gustavo
03/12/2004 - 14:39 | Informe spam
Hmmmm... no me sorprende. Alguna vez me paso algo parecido, con uno de esos
bugs de elefante que ni siquiera Microsoft nos pudo solucionar, y lo que hice
fue ponerle un redirector a la pagina de error. Brillante, como de costumbre,
pero mas feo que ver morir a la mama de hambre. Otra idea es que antes de que
el compilador entre en el finally (en el catch mismo, me refiero) le metas tu
propio redirector a una pagina o funcion tuya... es otra idea...
Saludos,
Gustavo
PS: A las deidades las fusilamos a todas en la ultima revolucion, y desde
entonces no tenemos mas de eso por aqui. Y te doy permiso de tutearme, pero
no abuses... 8->


"Tako" wrote:

Tako wrote:
> "Gustavo" wrote in message
> news:

>> Recuerda que SPS cuando comete un error muchas veces no devuelve
>> directamente una exception, sino que te manda a una pagina
>> error.aspx, que es
>> lo que puede estar pasando aqui (directamente desde el finally hacia
>> el error.aspx con una redireccion, de tal forma que nunca vas mas
>> alla en el codigo).

He estado mirando a base de snniffer y efectivamente parece que se hace
un redirect a una página de error, francamente me está tocando la moral el
asunto este, usease:

La DLL genera un error de seguridad
El WS trata ese error

Pero el SPS cuando el WS acaba de tratar ese error en lugar de seguir
con el código parece que automáticamente hace un redirect a otra página
ajena al WS y da un pete de conexión.

Los WebService tienen una propiedad que se llama AllowAutoRedirect pero
parece que no es efectivo para esto por que solo sirve para los errores
300...

¿alguien sabe como solucionar este comportamiento?¿es un bug?¿es un
feacture?¿está el mundo contra mi?

Si alguien tiene alguna sugerencia lo agradeceré enormemente

>
> Si, algo de ese estilo había pensado, pero no encuentro sentido a
> algunas cosas: ¿por que el código siguiente al try no se ejecuta?¿por
> que si estoy accediendo vía el modelo de objetos al SPS me tiene que
> redireccionar a ninguna lado?
>
> Es decir: ahora parece que: la DLL peta, el WS captura la
> excepción pero una vez se acaba el bloque del try en lugar de seguir
> ejecutando el código el propio WS hace un redirect a una página de
> error 401.
>
> Es que no tiene sentido ¿cómo es posible que el SPS corte la
> ejecución de código por que le de la real gana?¿y por que esa
> redirección justo al salir del try?
>
> De todas formas se me ha ocurrido una cosa: mañana pongo el WS en
> sitio nuevo del IIS que no tenga nada que ver con el SPS, a ver que
> demonios sucede pero aquí no tendría que haber redirecciones extrañas
> por parte del SPS por que no esta ejecutandose en él...
>
> Ya contare mañana, muchas gracias por la ayuda
>
>> Es una idea...
>> Saludos,
>> Gustavo
>>
>>
>> "Tako" wrote:
>>
>>>
>>> Hola grupo
>>>
>>> Tengo un problemilla que me está haciendo pensar muy seriamente
>>> en el retiro de la informática, no se si es un error mío, del SPS,
>>> de los Webservices o un bug del Framework, pero como en el fondo
>>> está el SPS lo mando aquí de momento a ver si entre sufridos
>>> programadores del SPS encontramos una solución.
>>>
>>> Explico la situación:
>>>
>>> Cliente (C) que llama a un Webservice (WS)
>>> WS que llama a una dll (DLL)
>>> DLL que hace trabajos contra el SPS, uno de estos trabajos
>>> es crear
>>> un sitio nuevo
>>>
>>> El problema se da cuando el usuario no tiene permisos para
>>> crear un sitio, entonces debería de suceder
>>>
>>> La DLL casca por que no tiene permisos, la DLL captura la
>>> excepción, deja constancia en un fichero de logs y la relanza.
>>> El WS captura esa excepción relanzada y devuelve el string
>>> "error" El cliente recibe la cadena "error" y hace lo que deba
>>> de hacer.
>>>
>>> El problema es que el cliente en lugar de recibir la cadena
>>> recibe un error 401 de acceso no autorizado a la página en lugar de
>>> "error", el problema es que el WS SI que trata bien la excepción y
>>> devuelve "error".
>>>
>>> He estado mirando el código depurándolo y a base de logs y
>>> sucede esto:
>>>
>>> try
>>> llamada a la dll
>>> catch ex as exception
>>> aquí entra
>>> finally
>>> aquí también
>>> end try
>>>
>>> aquí ya no llega
>>>
>>>
>>> Vamos, que parece que no llega a salir nunca del try.
>>>
>>> La verdad es que no le veo sentido.
>>>
>>> A ver si alguien me puede echar una mano.
>>>
>>> Graciassss




Respuesta Responder a este mensaje
#5 Tako
04/12/2004 - 21:29 | Informe spam
Gustavo wrote:
Hmmmm... no me sorprende. Alguna vez me paso algo parecido, con uno
de esos bugs de elefante que ni siquiera Microsoft nos pudo
solucionar, y lo que hice fue ponerle un redirector a la pagina de
error. Brillante, como de costumbre, pero mas feo que ver morir a la
mama de hambre. Otra idea es que antes de que el compilador entre en
el finally (en el catch mismo, me refiero) le metas tu propio
redirector a una pagina o funcion tuya... es otra idea...
Saludos,
Gustavo



Bueno, estoy a la caza de esto y después de preguntar en los grupos
ingleses (con mi maravilloso ingles:) me han dado a la pista hacia
"CatchAccessDeniedException", he mirado por Google y he encontrado esto
otro:
http://blogs.msdn.com/ryanrogers/ar...07/15.aspx

así que parece que tiene buena pinta. De todas formas, para bien de mi
salud mental, estoy de puente hasta el jueves, cuando lo pruebe ya comentare
si ha ido bien, si ha ido mal podréis escuchar mis lamentos por toda la
península.


PS: A las deidades las fusilamos a todas en la ultima revolucion, y
desde entonces no tenemos mas de eso por aqui. Y te doy permiso de
tutearme, pero no abuses... 8->



Uy, visto lo visto voy a tener que dejar de relucir y de salir disfrado
de cisne de parranda no sea que intuyas mi naturaleza ]:) jajajaja



"Tako" wrote:

Tako wrote:
"Gustavo" wrote in message
news:



Recuerda que SPS cuando comete un error muchas veces no devuelve
directamente una exception, sino que te manda a una pagina
error.aspx, que es
lo que puede estar pasando aqui (directamente desde el finally
hacia el error.aspx con una redireccion, de tal forma que nunca
vas mas alla en el codigo).





He estado mirando a base de snniffer y efectivamente parece que
se hace un redirect a una página de error, francamente me está
tocando la moral el asunto este, usease:

La DLL genera un error de seguridad
El WS trata ese error

Pero el SPS cuando el WS acaba de tratar ese error en lugar de
seguir con el código parece que automáticamente hace un redirect a
otra página ajena al WS y da un pete de conexión.

Los WebService tienen una propiedad que se llama
AllowAutoRedirect pero parece que no es efectivo para esto por que
solo sirve para los errores 300...

¿alguien sabe como solucionar este comportamiento?¿es un bug?¿es
un feacture?¿está el mundo contra mi?

Si alguien tiene alguna sugerencia lo agradeceré enormemente


Si, algo de ese estilo había pensado, pero no encuentro sentido
a algunas cosas: ¿por que el código siguiente al try no se
ejecuta?¿por que si estoy accediendo vía el modelo de objetos al
SPS me tiene que redireccionar a ninguna lado?

Es decir: ahora parece que: la DLL peta, el WS captura la
excepción pero una vez se acaba el bloque del try en lugar de seguir
ejecutando el código el propio WS hace un redirect a una página de
error 401.

Es que no tiene sentido ¿cómo es posible que el SPS corte la
ejecución de código por que le de la real gana?¿y por que esa
redirección justo al salir del try?

De todas formas se me ha ocurrido una cosa: mañana pongo el WS
en sitio nuevo del IIS que no tenga nada que ver con el SPS, a ver
que demonios sucede pero aquí no tendría que haber redirecciones
extrañas por parte del SPS por que no esta ejecutandose en él...

Ya contare mañana, muchas gracias por la ayuda

Es una idea...
Saludos,
Gustavo


"Tako" wrote:


Hola grupo

Tengo un problemilla que me está haciendo pensar muy
seriamente en el retiro de la informática, no se si es un error
mío, del SPS, de los Webservices o un bug del Framework, pero
como en el fondo está el SPS lo mando aquí de momento a ver si
entre sufridos programadores del SPS encontramos una solución.

Explico la situación:

Cliente (C) que llama a un Webservice (WS)
WS que llama a una dll (DLL)
DLL que hace trabajos contra el SPS, uno de estos trabajos
es crear
un sitio nuevo

El problema se da cuando el usuario no tiene permisos para
crear un sitio, entonces debería de suceder

La DLL casca por que no tiene permisos, la DLL captura la
excepción, deja constancia en un fichero de logs y la relanza.
El WS captura esa excepción relanzada y devuelve el string
"error" El cliente recibe la cadena "error" y hace lo que deba
de hacer.

El problema es que el cliente en lugar de recibir la cadena
recibe un error 401 de acceso no autorizado a la página en lugar
de "error", el problema es que el WS SI que trata bien la
excepción y devuelve "error".

He estado mirando el código depurándolo y a base de logs y
sucede esto:

try
llamada a la dll
catch ex as exception
aquí entra
finally
aquí también
end try

aquí ya no llega


Vamos, que parece que no llega a salir nunca del try.

La verdad es que no le veo sentido.

A ver si alguien me puede echar una mano.

Graciassss
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida