2011-10-05 20 views
9

Tengo un código en mi aplicación ASP.NET en C# que está en el archivo de código Global.asax.cs. En el Application_Start, Session_Start y Application_Begin Request he establecido algunos puntos de interrupción. Sin embargo, ninguno de estos es golpeado. Estoy trabajando en mi máquina local con VS8.global.asax punto de interrupción no tocó

Aquí es lo que he intentado:

  • detuvo el ASP Dev servidor
  • borran todos los archivos temporales de ASP.NET
  • Creado nueva Global.asax
  • Cierre y apertura VS copia de seguridad
  • Limpiar y reconstruir proyecto

Después de intentarlo después de estos, los puntos de interrupción no llegarán.

¿Alguna idea de por qué esto podría ser?

+0

¿por qué no intenta poner un poco de System.Diagnostics.Debug.WriteLine (...); en cada uno de esos eventos y verifica la ventana de salida mientras ejecuta la solución desde Visual Studio? ¿Ves algo? –

+2

Ver [esta respuesta] (http://stackoverflow.com/questions/1960651/it-is-possible-to-debug-global-asax/4809464#4809464) - ¿Ayuda en su caso? –

+0

¿Podría pegar las declaraciones reales de estos métodos? Tal vez los has declarado incorrectamente. –

Respuesta

24

Me he encontrado con este mismo problema. Supongo que está utilizando su IIS local en lugar del Servidor de desarrollo VS. Si este es el caso, no podrá depurar/recorrer este código en el archivo Global.asax.cs porque para cuando se haya adjuntado el depurador, este código ya se ejecutó en IIS. Sin embargo, si usa el servidor Dev, tiene la capacidad de acceder a este código ya que el depurador ya estará conectado.

Por lo tanto, cambie el servidor en las propiedades de su proyecto para usar el Visual Studio Development Server.

Esto se puede encontrar haciendo clic derecho en su proyecto dentro de Visual Studio>Project Properties>Web tab>Use Visual Studio Development Server.

+0

Esto funcionó muy bien para mí. Debe ser una respuesta aceptada – Kevin

+4

En VS 2013 falta Visual Studio Development Server, también la respuesta de @Ofiris no ayuda –

4

Lo que me ayudó fue añadir:

System.Diagnostics.Debugger.Break(); a que Application_Start() método.

+0

Error de la aplicación Got. – QMaster

2

En un proyecto en el que estaba trabajando, la opción "Iniciar programa externo", fue seleccionado en la ficha:

Visual Studio> Propiedades del proyecto> Web

Esto estaba causando los puntos de interrupción para no ser golpeado

Al cambiar "Iniciar acción" a "Página actual" se solucionó este problema.

0

Como se menciona en otra respuesta, el código Global.asax se ejecutará antes de que el depurador tenga la oportunidad de adjuntarlo. Para evitarlo, puede iniciar la depuración, luego acceder a IIS y detener/iniciar la aplicación, que luego debe hacer que el depurador inicie el reinicio.

0

Tuve este problema dos veces. El primer proyecto que me pasó a mí, fui a Project Properties-> Build-> Advanced ... y seleccioné "full" del menú desplegable Depurar información.

La segunda vez, los puntos de interrupción en mi global.asax no nos están golpeando, pero dio esta advertencia si me movía sobre el punto crítico: "El código fuente es diferente de la versión original."

Finalmente descubrí que en este caso, había hecho una copia de seguridad de este proyecto para conservar el código y estaba trabajando con la copia. Aunque estaba en una carpeta diferente, todavía estaba usando el dll para el directorio virtual del original: http://localhost:4952/

Así que cambió eso en el Proyecto Properties-> Web-> Proyecto URL que acaba de cambiar el puerto a http://localhost:49523/ y funcionó

me incitó a crear el directorio virtual.. , Dije que sí y no he tenido ningún problema con los puntos de corte desde.

1

If y ou no quieren utilizar Visual servidor Development Studio y utilizar IIS, puede hacer lo siguiente piscina (probado en VS2015 Profesional)

1) aplicación en un estado de ejecución - asegurarse de que usada grupo de aplicaciones se está ejecutando accediendo una página de su aplicación web (puede detenerse debido a un tiempo de inactividad).

2) conectar con el proceso - Ctrl-Alt-P o Debug -> Attach to Process -> lookup su proceso de w3wp que corresponde a su aplicación.

Adjuntar al proceso se puede acelerar considerablemente utilizando ReAttach extension, que crea accesos directos a los procesos adjuntos recientemente.

3) grupo de aplicaciones de reciclaje - Asegúrese de que el grupo de aplicaciones se recicla por cualquiera de IIS que entran y reciclarlo o incluso más rápido, mediante la introducción de web.config, hacer un cambio sin efecto (poner un poco fuera blanco de etiquetas) y guardándolo

4) Comience a depurar - Realice una solicitud a cualquier página de su aplicación web para forzar su inicialización. Usted debe ser capaz de colocar y apretar los puntos de interrupción de cualquiera de los métodos de inicio en el Global.asax

protected void Application_Start() 
void Application_BeginRequest(Object sender, EventArgs e) 
protected void Session_Start(object sender, EventArgs e) 
+0

No es perfecto pero es útil: ingrese a web.config, realice un cambio sin efecto (ponga un espacio en blanco fuera de las etiquetas) y guárdelo. Merecido +1 :) – QMaster

Cuestiones relacionadas