Foros del Web » Programación para mayores de 30 ;) » .NET »

Control de errores!

Estas en el tema de Control de errores! en el foro de .NET en Foros del Web. Hola, ¿alguien puede ayudarme? Resulta que mi web site trabaja tanto con ASPs como con .NET; y el control de errores para ASP funciona correctamente: ...

  #1 (permalink)  
Antiguo 20/10/2005, 03:15
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
Pregunta Control de errores!

Hola, ¿alguien puede ayudarme?

Resulta que mi web site trabaja tanto con ASPs como con .NET; y el control de errores para ASP funciona correctamente:
desde IIS le digo a que página debe ir en caso de error, y esa página me envía [por email] todos los datos sobre el error.


¿ Pero como puedo hacer algo similar para las páginas .NET ?

Quiero que al ocurrir un error en alguna de mis páginas aspX, me envíe el problema; ya que ahora muestra esta pantalla:

Cita:
Server Error in '/' Application.
-------------------------------------------------------------
-------------------

Runtime Error
Description: An application error occurred on the server. The
current custom error settings for this application prevent the
details of the application error from being viewed remotely (for
security reasons). It could, however, be viewed by browsers
running on the local server machine.

Details: To enable the details of this specific error message to
be viewable on remote machines, please create a
<customErrors> tag within a "web.config" configuration file
located in the root directory of the current web application.
This <customErrors> tag should then have its "mode" attribute
set to "Off".


<!-- Web.Config Configuration File -->

<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>


Notes: The current error page you are seeing can be replaced
by a custom error page by modifying the "defaultRedirect"
attribute of the application's <customErrors> configuration tag
to point to a custom error page URL.


<!-- Web.Config Configuration File -->

<configuration>
<system.web>
<customErrors mode="RemoteOnly"
defaultRedirect="mycustompage.htm"/>
</system.web>
</configuration>
Espero su ayuda. Gracias
j@n
  #2 (permalink)  
Antiguo 20/10/2005, 03:50
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
Pregunta control errores

óbviamente.... no leí hasta el final :

Con esto soluciono el problema:
<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>

Pero necesito que me devuelva la página, el número de línea, el tipo de error... etc...

como uso en ASP:
Set objASPError=Server.GetLastError()
strFile = UCASE(objASPError.File)
IntLine = objASPError.Line
IntColumn = objASPError.Column
strDesc = UCASE(objASPError.Description)
strCategory = objASPerror.Category

gracias (y perdón la primera consulta)
j@n
  #3 (permalink)  
Antiguo 20/10/2005, 06:39
 
Fecha de Ingreso: enero-2004
Mensajes: 310
Antigüedad: 20 años, 3 meses
Puntos: 0
Podrias redireccionar la pagina a una aspx que se encargara de registrar los erorres para enviarlos x email.
Desconoczco si con el IIS se puede hacer, pero lo que si tienes es el log del IIS para ver si las cosas han ido okey
__________________
Un saludo,
Trucos
Videos
  #4 (permalink)  
Antiguo 20/10/2005, 06:47
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
control errores .net

hold Dynk,
lo de redirigir a otra página ya lo hago.

Lo que necesito es que esa página o el evento Application_Error de GLOBAL.ASAX (es lo que estoy intentando ahora) me devuelva:
- la página donde ha ocurrido el error
- la línea de la página donde ha ocurrido el error
- descripción del error
- y cualquier otra información sobre el error

¿mentiendes?

un saludo
  #5 (permalink)  
Antiguo 20/10/2005, 08:54
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Captura la última excepción.
ex = Server.GetLastError().InnerException

ex.Message -> Información
ex.StackTrace -> Más información(incluida página y línea)
Request.UserHostAddress -> Ip que la ha generado

suerte.
  #6 (permalink)  
Antiguo 20/10/2005, 09:03
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
Desacuerdo no va a Application_Error

hola
no consigo que al existir cualquier error (no controlado por try...catch) entre en el procedimiento Application_Error de global.asax

¿¿que me puede faltar??

- quiero que sea esa función la que envíe un email de aviso
- y modificando el web.config envio al cliente a una página genérica de error

1saludo
j@n
  #7 (permalink)  
Antiguo 20/10/2005, 09:08
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
No te entra????que raro, yo para probarlo hago:

dim arr as arraylist
arr.add("prueba")
y cuando ejecuto me lleva automaticamente al application_error, me llega un mail y redireciona a la página principal mostrando un mensaje de error en un alert.
  #8 (permalink)  
Antiguo 20/10/2005, 09:34
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
global.asax

he comprobado que no entra ni al Sub Application_Start de global.asax





¿¿tengo que añadir algún parámetro a mi página (aspx/vb) para que use global.asax ??


gracias
j@n
  #9 (permalink)  
Antiguo 20/10/2005, 09:57
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Que raro, prueba haber si te entra en Session_Start()
  #10 (permalink)  
Antiguo 20/10/2005, 12:16
 
Fecha de Ingreso: octubre-2005
Mensajes: 10
Antigüedad: 18 años, 6 meses
Puntos: 0
Hola

No entra al Application_Error por que tienes el valor CustomError activo; ponlo desactivadoa:

<customErrors mode="Off" />

Y ya entrara al Application_Error coloca lo que te dijo el amigo Jose_minglein2 de capturar la ultima excepción.

Espero te sirva.
  #11 (permalink)  
Antiguo 21/10/2005, 01:13
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
Desacuerdo c.errores

también lo he probado en 'Off' y no funciona :-p
¿tengo que tener el Global.asax en el directorio raiz?

Creo que no está haciendo ni caso al GLOBAL.ASAX.vb que es lo que yo modifico y subo a mi site. [global.asax no se modifica]

si alguien tiene alguna pista de lo que me puede faltar.....

gracias por vuestro tiempo
j@n
  #12 (permalink)  
Antiguo 21/10/2005, 01:19
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
GLOBAL.ASAX.vb no tienes que tenerlo en el servidor, si no compilado en la .dll, lo que si tienes que tener en el raiz es global.asax.


¿Te funciona en local cuando estás programando??
  #13 (permalink)  
Antiguo 21/10/2005, 01:40
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
Pregunta global.asax

ya, el .vb no lo tengo en el servidor; pero no veo que el GLOBAL.ASAX se modifique al modificar yo el .vb ¿?

* también he probado copiando GLOBAL.ASAX en la raiz... y tampoco



....
j@n
  #14 (permalink)  
Antiguo 21/10/2005, 01:53
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Evidentemente no cambia, sólo contiene esta línea

<%@ Application Codebehind="Global.asax.vb" Inherits="nombreaplicacion.Global" %>

Asegurate de que tienes sólo un global.asax,

repito, te funciona en local???
  #15 (permalink)  
Antiguo 21/10/2005, 02:04
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
Información c.errores

si me funciona en debug (local).
hago lo que me indicaste.... y veo la variabla EX correctamente!

voy a llevar esa versión al site... haber si...............................
  #16 (permalink)  
Antiguo 21/10/2005, 02:12
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
De acuerdo funciona

pues... creo que ya funciona !!!!!!!!!!

El gran error era no tener GLOBAL.ASAX en el directorio raiz
(como no lo usaba nunca....)

Me funciona en el site de pruebas.... veremos si lo consigo en producción !

¡¡¡ Muchas gracias por la ayuda !!!


j@n
  #17 (permalink)  
Antiguo 21/10/2005, 02:48
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
Pregunta pagina/LINEA ??

Hola.
- funciona el aviso bien...
- redirijo al usuario a una página...
- pero no sé como recoger la página y la línea (sobretodo, ya que necesito conocer la posición exacta del error)

con Dim ex = Server.GetLastError().InnerException
y
ex.stacktrace no me devuelve lo que necesito....

He usado la inspección del debug para encontrar página y linea pero no lo veo.... ¿Existe alguna manera de conocer página y línea donde se generó el error?


gracias
j@n
  #18 (permalink)  
Antiguo 21/10/2005, 02:54
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
revista lo que te dije en

ex.Message -> Tendrás por ejemplo si es un referencia a un objeto nulo
Request.Path -> Página que lo originio (perdón se me olvido la otra vez), bueno, la verdad es que esto indica la página de origen que por el caso es la que lanza la excepcion.

y en ex.StackTrace
tienes todo el resto de la información, funciones que la lanzan (no se sale la línea.
  #19 (permalink)  
Antiguo 21/10/2005, 03:16
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
si pero...

he forzado dos tipos de errores y me devuelve lo mismo:

1)
Dim arr As ArrayList
arr.Add("prueba")
2)
Dim conexion As New SqlConnection("Server=1111111;DataBase=base;UID=us u;PWD=psw")
conexion.Open()

ex.Message: Exception of type System.Web.HttpUnhandledException was thrown.

ex.StackTrace: at System.Web.UI.Page.HandleError(Exception e) at System.Web.UI.Page.ProcessRequestMain() at System.Web.UI.Page.ProcessRequest() at System.Web.UI.Page.ProcessRequest(HttpContext context) at System.Web.HttpServerUtility.ExecuteInternal(Strin g path, TextWriter writer, Boolean preserveForm)

???¿¿¿

¿no me va a devolver el error concreto?
lo que necesito es localizar DONDE ha ocurrido el error (pagina/linea) y PORQUE (como ayuda)

¿como podría encontrar esos valores?


thanks
j@n
  #20 (permalink)  
Antiguo 21/10/2005, 03:28
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Lo que está fallando es la redirección y como no puede redireccionar da ese fallo, (a mi tambien me ocurre lo mismo, quita el redirect y haz una insercion en la BD o enviate un correo informativo para que veas que si funciona), yo todavía estoy con lo del redirect.
  #21 (permalink)  
Antiguo 21/10/2005, 03:32
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
El redirect es posible que te falle si pones rutas relativas, es decir en el global.asax debes tener en cuenta que p.ej. /error.aspx, no es midominio.com/error.aspx

si no mimaquina/error.aspx

entiendes??
  #22 (permalink)  
Antiguo 21/10/2005, 03:33
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
pero.... sí veo la página a la que redirecciono!
El web.config lo tengo con: <customErrors mode="Off"/>
y en el Application_Error de Global.ASAX me envío un email (que recibo ok) y redirijo (correctamente) ... pero el email me devuelve ese mensaje.

aunque quite el redirect:

at System.Web.UI.Page.HandleError(Exception e) at System.Web.UI.Page.ProcessRequestMain() at System.Web.UI.Page.ProcessRequest() at System.Web.UI.Page.ProcessRequest(HttpContext context) at System.Web.HttpServerUtility.ExecuteInternal(Strin g path, TextWriter writer, Boolean preserveForm)
  #23 (permalink)  
Antiguo 21/10/2005, 03:40
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Yo el customErrors lo tengo a RemoteOnly para sólo verlos por local, quizá sea eso, porque a mi si que me entra en application_error y ya te digo que lo tengo en remoteOnly,

pruebalo haber que te sale
  #24 (permalink)  
Antiguo 21/10/2005, 03:42
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
Busqueda ruta en el global.asax

¿Te refieres a que debe ser ruta COMPLETA no?
Sí, uso ruta completa (y veo perfectamente la página a la q redirijo)

También con Server.transfer("rutaCompleta")

Cita:
El redirect es posible que te falle si pones rutas relativas, es decir en el global.asax debes tener en cuenta que p.ej. /error.aspx, no es midominio.com/error.aspx

si no mimaquina/error.aspx

entiendes??
alguna pista??

¿tú tienes problemas con el redirect? : pero no se te 'abre' la página a la que rediriges??
**Gracias**
j@n
  #25 (permalink)  
Antiguo 21/10/2005, 03:45
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Si ya se me abre, (yo no redirigía pero lo he probado y ya se abre poniendo lo que te he dicho como ruta completa). Prueba lo de RemoteOnly o On
  #26 (permalink)  
Antiguo 21/10/2005, 03:49
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
no tengo problemas con la redirección.
El problema que veo es que me devuelve la misma información en dos tipos de errores distintos.
Tu me has dicho antes que este mensaje se refería a la redirección... pero no tiene nada que ver; ya que si quito la redirección, me llega el email igual:
"at System.Web.UI.Page.HandleError(Exception e) at System.Web.UI.Page.ProcessRequestMain() at System.Web.UI.Page.ProcessRequest() at System.Web.UI.Page.ProcessRequest(HttpContext context) at System.Web.HttpServerUtility.ExecuteInternal(Strin g path, TextWriter writer, Boolean preserveForm)
"
Y como message: Exception of type System.Web.HttpUnhandledException was thrown.

* He probado remotely/on/... y sigue igual !

¿¿??
  #27 (permalink)  
Antiguo 21/10/2005, 03:54
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Mira un mensaje que me sale a mi
Código:
Error Desconocido en la aplicación
/asmen/Tareas/mntTareas.aspx (este es el request)

Referencia a objeto no establecida como instancia de un objeto. (el mensaje)
//el stack
   at asmen.mntTareas.Page_Load(Object sender, EventArgs e)
   at System.Web.UI.Control.OnLoad(EventArgs e)
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Page.ProcessRequestMain()
No entiendo que puede estar pasando, pero intenta una cosa (si no lo has hecho ya), pon un punto de interrupción en tu Application_Error y ejecuta obligando a una excepción cuando pase por la función mira a ver que valor toma cada variable (ex.message ....),
  #28 (permalink)  
Antiguo 21/10/2005, 04:07
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
si lo hago con el punto de interrupción... SI me devuelve los resultados ok:

message: Object reference not set to an instance of an object.
o
message: SQL Server does not exist or access denied.

Stack: at Web.consulta.Page_Load(Object sender, EventArgs e) in \\Web\c_Act.aspx.vb:line 130 at System.Web.UI.Control.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain()
o
Stack: at System.Data.SqlClient.ConnectionPool.GetConnection (Boolean& isInTransaction) at System.Data.SqlClient.SqlConnectionPoolManager.Get PooledConnection(SqlConnectionString options, Boolean& isInTransaction) at System.Data.SqlClient.SqlConnection.Open() at Web.consulta.Page_Load(Object sender, EventArgs e) in \\Web\c_Act.aspx.vb:line 135 at System.Web.UI.Control.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain()

¡Que es lo que necesito!

pero al usarlo en el site de pruebas.... no funciona!!
.........
¿?
  #29 (permalink)  
Antiguo 21/10/2005, 04:10
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
¿usas Server.ClearError()?
lo he incluido... lo he quitado... y funciona igual.... ¡de mal!


j@n
  #30 (permalink)  
Antiguo 21/10/2005, 04:16
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Probablemente sea que el application_error esté generando a su vez una excepcion y entre en bucle infinito, te comento, cuando yo tenía mal lo de la redirección. La página se quedaba colgada puesto que entraba en un bucle infinito, es decir, daba EL ERROR - Redireccionaba - Error - Redireccion -Error .... y así continuamente y me llegaban mogollón de mails (hasta que le daba a detener), con el error que comentas
System.Web.UI.Page.ProcessRequestMain()
...

Revisa bien tu codigo, cuando ejecutes paso a paso mira bien que está pasando, si quieres poner tu application_error, y le echamos un vistazo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:33.