No puedo depurar el archivo global.asax!¿Es posible depurar Global.asax?
Tengo algunos códigos en el método Application_Start()
, pero cuando establezco un punto de interrupción en el método, ¡se ignora!
¿Es esto normal?
No puedo depurar el archivo global.asax!¿Es posible depurar Global.asax?
Tengo algunos códigos en el método Application_Start()
, pero cuando establezco un punto de interrupción en el método, ¡se ignora!
¿Es esto normal?
Tal vez debería probar:
Sí, es normal.
Application_Start()
es procesado por IIS.
Pero todos los demás métodos, por ejemplo Session_Start
, y todos los demás, excepto Application_Start()
se pueden depurar normalmente.
Application_Start()
se invoca una vez por AppDomain. Si no está agotando su punto de ruptura, que significa el dominio de aplicación ya creada, también lo hacen los siguientes:
Compruebe que su aplicación web está en modo de depuración (<compilation debug="true">
en web.config).
Si está utilizando el desarrollador IIS iniciado por VS, simplemente reinícielo o reconstruya la aplicación.
Si estás en IIS normal, usted tiene dos opciones:
Debug - Attach to process
, ingrese el nombre de la computadora y luego seleccione un proceso para depurar. Por lo general, es un w3wp.exe que funciona en el tipo de modo administrado.gracias por su respuesta. Yo uso IIS a través de VS. – mahdiahmadirad
Una manera simple de romper en Application_Start()
es utilizar la clase System.Diagnostics.Debugger
. Puede forzar que la aplicación se rompa insertando System.Diagnostics.Debugger.Break()
donde desea que se rompa el depurador.
void Application_Start(object sender, EventArgs e)
{
System.Diagnostics.Debugger.Break();
// ...
}
Borre el global.asax
y añada uno nuevo. En mi solución, ha habido un global.asax
y un global.asax.cs
.
Todos los métodos (Session_Start
, Application_Start
, ...) han estado en los archivos bot, pero solo los que están en el global.asax
han sido considerados. Por lo tanto, los puntos de corte y el código en el cs no hacen nada.
Solo después de volver a crear el archivo, el global.asax.cs
tenía los métodos adecuados y se ejecutaban.
Seguí las instrucciones aquí: http://rossnelson.blogspot.ca/2005/11/fixing-globalasax-in-aspnet-20.html. Básicamente, elimine el archivo global.asax y agregue una clase de aplicación global que vuelva a crear el asax con un código detrás del archivo, al cual puedo acceder. Me estoy ejecutando en IIS y funciona bien. – cbeuker
Otra alternativa a la System.Diagnostics.Debugger.Break();
aceptado habría
void Application_Start(object sender, EventArgs e)
{
System.Diagnostics.Debugger.Launch();
//...
}
que no debe romper el código y debe iniciar el depurador, incluso si el servicio se inició con diferentes derechos.
esto es bueno, lo intenté y funcionó para mí también ... gracias –
No espere que se llame inmediatamente a la función Application_Start() presionando f5. Application_Start() se invoca solo en el momento de la primera solicitud de la aplicación. Extraño pero cierto.
En caso de que todas las respuestas sin funcionar, prueba:
<compilation debug="true" ... />
en web.config
. ;)
Es extraño que esto haya sido marcado como la respuesta pero tiene una calificación -2 ... –
Tiene una calificación negativa porque está mal. Es correcto decir que necesita estar en depuración (o si no tiene los archivos pdb) y necesita capturar el servidor cuando se inicia (porque es cuando se ejecuta ese código) pero no podrá para unir al proceso. Necesita un proceso en ejecución para conectar el depurador, el código global.asax se ejecuta en los primeros milisegundos de este proceso, por lo que es literalmente imposible (sin utilizar la [respuesta correcta a continuación] (https://stackoverflow.com/a/) 4809464/542251)) para adjuntar al proceso mientras ejecuta este código – Liam