Tengo una aplicación ASP.NET MVC (beta) en la que estoy trabajando y tengo problemas para determinar si estoy haciendo algo mal o si mi Application_Start
método en Global.asax.cs no se dispara cuando intento para depurar la aplicación
Puse un punto de interrupción en una línea en mi Application_Start
método, y espero que cuando intente depurar la aplicación, el punto de interrupción se vea afectado ... pero nunca lo hace. No después de reiniciar IIS, no después de reiniciar, nunca. ¿Me estoy perdiendo de algo? ¿Por qué este método nunca se llama?
c#
asp.net-mvc
Bob Yexley
fuente
fuente
global.asax
que simplemente faltaba el archivo. así que también vale la pena comprobarlo :-)Respuestas:
Si esto está en IIS, la aplicación puede comenzar antes de que el depurador se haya conectado. Si es así, no estoy seguro de si puede enhebrar el sueño lo suficiente como para apegarse.
En Visual Studio, puede adjuntar el depurador a un proceso. Para ello, haga clic en Depurar >> Adjuntar para procesar. Adjunte al navegador y luego presione su aplicación. Para estar seguro, reinicie IIS y acceda al sitio. No estoy 100% convencido de que esto resolverá el problema, pero será mucho mejor que disparar un hilo de suspensión en App_Start.
Otra opción es alojar temporalmente en el servidor web incorporado hasta que finalice el inicio de la aplicación de depuración.
fuente
Nota: una buena alternativa fácil de usar el "Visual Studio Development Server" incorporado o IIS Express (por ejemplo, porque está desarrollando contra IIS y tiene configuraciones particulares que necesita para el correcto funcionamiento de su aplicación) es simplemente seguir ejecutándose en IIS (I use el servidor web personalizado + entrada de archivo de hosts + enlace IIS al mismo dominio)
Su punto de interrupción debe alcanzarse muy bien y puede continuar depurando en su hábitat natural de IIS . Excelente !
fuente
La siguiente ayuda en cualquier caso (no importa si está usando IIS, Cassini o lo que sea):
¿Por qué funciona esto? Cuando se cambia web.config, el servidor web (IIS, Cassini, etc.) realiza un reciclaje, pero en este caso (por cualquier motivo), el proceso sigue igual, por lo que debe seguir conectado con el depurador (Visual Studio )
fuente
También estoy teniendo problemas con los puntos de interrupción en application_start con IIS, una aplicación alojada. Una buena solución es usar Debugger.Break (); en código en lugar del punto de interrupción VS
fuente
Tengo el mismo problema He cambiado mucho el nombre de mi solución. Después de eso obtuve dos aplicaciones web que no funcionaban y varias otras aplicaciones web estaban bien. Recibí un error de que tengo rutas incorrectas. Cuando intenté configurar el punto de interrupción en el
Application_Start
método y luego reiniciar IIS, VS no interrumpió la ejecución. Con las aplicaciones web viables, el descanso funcionaba. Luego recordé que "solución limpia" y "reconstruir" no eliminan los ensamblados que quedan después de cambiar el nombre. ¡Y esa fue la solución! He limpiado manualmente losbin
directorios de mis aplicaciones web con errores y luego vi un nuevo error en elGlobal.asax
Inherits=""
atributo al que se hacía referencia dll antiguo. Lo he cambiado en nuevo y el descanso comenzó a funcionar. Supongamos que, durante el cambio de nombre Global.asax no se actualizó,fuente
Tuve el mismo problema en un proyecto que asumimos después de que otro proveedor lo construyó. El problema era que, si bien había una serie de comandos escritos por el proveedor anterior en Global.asax.cs, que podrían llevarlo a creer que estaba en uso, en realidad se estaba ignorando por completo. Global.asax no estaba heredando de él, y es fácil nunca ver este archivo si el archivo .cs está presente; debe hacer clic con el botón derecho en Global.asax y hacer clic en Ver marcado para verlo realmente.
Global.asax:
Necesitaba ser cambiado a:
Donde ProjectNamespace es el espacio de nombres de su clase Global.asax.cs (generalmente el nombre de su Proyecto).
En nuestro caso, el archivo contenía un montón de código en línea, algunos de los cuales fueron copiados del archivo .cs, otros no. Acabamos de volcar el código en línea en el archivo .cs y gradualmente fusionamos nuestros cambios nuevamente.
fuente
Intente cambiar el modo de canalización administrado para el grupo de aplicaciones a "Clásico" en lugar de "Integrado". Eso resolvió el problema para mí. Buscando la razón ahora ...
(Los accesorios para esta respuesta pertenecen a Flores (vea su comentario sobre su propia respuesta), solo quería proporcionar esto como una respuesta separada para llamar más la atención)
fuente
Asegúrese de que su global.asax no esté en un subdirectorio. Tiene que colocarse a nivel raíz en su proyecto.
fuente
Global.asax.cs
y esperaba que funcionara. Debe crearlo usandoAdd
->New Item
->Global Application Class
para que se cree con elGlobal.asax
archivo de configuración de formularios web correspondiente .Tuvimos un problema similar, donde se ignoraba global.asax.cs.
Resulta que el sitio se actualizó de un sitio web .NET 2 precompilado a un sitio .NET 4.0. En el servidor, el
PrecompiledApp.config
archivo no se había eliminado de la carpeta raíz. Después de eliminarlo y reciclar el grupo de aplicaciones IIS y tocar web.config para reiniciar la aplicación, el código en Global.asax.cs comenzó a funcionar bien.fuente
Una vez tuve un problema en el que los scripts de implementación no copiaban Global.asax y Global.asax.cs en realidad a la carpeta IIS ... Así que funcionó al depurar en el servidor de desarrollo, pero no bajo IIS.
fuente
Una entrada tardía ...
Para probar si la aplicación IIS se inicia o no antes de que el depurador haya tenido tiempo suficiente para adjuntarla, solo agréguela a la parte superior o inferior de su GLOBAL.ASAX
Application_Start
.fuente
Cuando dice "depurar", ¿se refiere a iniciar realmente la aplicación desde el servidor web incorporado de Visual Studio para la depuración, o se refiere a adjuntar al proceso en IIS? Si es el primero, debe presionar Application_Start, pero si es el último, puede ser difícil estar en el proceso lo suficientemente temprano como para detectarlo.
fuente
Cierre Visual Studio y elimine el
bin
yobj
carpetas en su proyecto web (o todos los proyectos en la solución).Aquí hay comandos para eliminar estas carpetas de todos sus proyectos:
fuente
Hice algunos cambios basados en "Análisis de código en compilación" de Visual Studio. Code Analysis sugirió "CA1822 Marcar miembros como estáticos" para Application_Start () en Global.asax. Lo hice y terminé con este problema.
Sugiero suprimir este mensaje de Análisis de Código y no alterar la firma de métodos / clases creados automáticamente por la plataforma utilizada para el arranque de la Aplicación. La firma del método Application_Start probablemente no era estática por alguna razón.
Volví a este método-firma y Application_Start () estaba disparando nuevamente:
fuente
Enfrenté este problema al usar una página estática (por ejemplo, index.html) como página de inicio: no se llama a Application-Start. Descubrí que servir una página estática en realidad no inicia la aplicación. Solicitar una página .aspx sí.
fuente
Asegúrese de que los espacios de nombres en Global.asax y Global.asax.cs sean iguales. Si son diferentes, no arrojará ningún error, pero tampoco alcanzará el punto de interrupción porque no está ejecutando application_start en absoluto.
fuente
Creo que el evento de inicio de la aplicación solo se activa cuando se realiza la primera solicitud, ¿está accediendo a su sitio web (es decir, haciendo una solicitud)?
fuente
Tuve este problema en un proyecto .20 4 de formularios web vs2010 y probé todo lo mencionado en esta página. Terminé eliminando y agregando global.asax en realidad resolvió el problema por mí.
fuente
Tuve el mismo problema, no pude atrapar Application_Start. Y la razón fue que no se estaba disparando a una falta de coincidencia en el archivo de marcado. El archivo de marcado Global.asax estaba heredando otra clase ...
fuente
¿Revisaste la configuración del proyecto? Tuve este problema y tenía la URL de inicio yendo a un puerto diferente al puerto específico de mi servidor. Me tomó demasiado tiempo darme cuenta ...
fuente
Después de probar todas las otras respuestas que eran aplicables en mi situación y no tuve suerte con ninguna de ellas, entré en las propiedades del proyecto web (el proyecto del lado del servidor para una aplicación de Silverlight que usa los Servicios RIA), hice clic en "Web" y cambió el servidor seleccionado de "Local IIS" a "IIS Express". (Tenga en cuenta que estoy usando VS2013.) Esto resolvió el problema. Application_Start se ejecuta bajo "IIS Express" pero no bajo "Local IIS". Interesante...
fuente
Estaba tratando de pasar por el código en RegisterRoutes () llamado desde el inicio de la aplicación y no alcanzar mi punto de interrupción. Determiné que Application_Start no estaba siendo llamado. Tuve que hacer un cambio para hacer un cambio superficial en App_start / RouteConfig.cs y guardarlo antes de que llamaran a Application_Start. Supongo que estos archivos se almacenan en caché en algún lugar y no se llaman a menos que se realice un cambio.
fuente
Mi mismo problema se resolvió agregando referencia de
System.Web.Routing
ensamblaje en el proyectofuente
Si está utilizando System.Diagnostics.Debugger.Break (); solución alternativa (que creo que está bien para uso temporal) y "simplemente no funciona" en su máquina con Windows 8. La razón es un error en la depuración "Just in time" de Visual Studio.
La solución es la siguiente: arreglar la clave para el "Visual Studio Just-In-Time Debugger"
Abra regedit y vaya a HKEY_CLASSES_ROOT \ AppID {E62A7A31-6025-408E-87F6-81AEB0DC9347} para el valor de registro 'AppIDFlags', establezca el indicador en 0x8
Más información aquí: http://connect.microsoft.com/VisualStudio/feedback/details/770786/just-in-time-debugging-operation-attempted-is-not-supported
fuente
En mi caso, eliminar la instancia del servidor de desarrollo ASP.NET incorporado a través de la bandeja del sistema resolvió el problema.
fuente
Cosas extrañas y locas ... pero la depuración en una máquina servidor y otro usuario dejaron IIS Express ejecutándose en su sesión. Tuve que cerrar sesión en ese usuario para eliminar sus procesos IIS Express en ejecución. ¡Eso parece haber arreglado el problema!
Actualizar
Después de pasar más de 1 hora persiguiendo lo que estaba causando el problema ... aquí está el trato: logré escribir un poco
s
dentro de la<appSettings>
secciónWeb.config
. Visual Studio trató de advertirme en laError List
ventana con una advertencia . Confieso que rara vez reviso las advertencias ... debería comenzar a revisarlo a partir de ahora. : D Tan pronto como eliminé la infracción,s
el punto de interrupción fue alcanzadoApplication_Start
.fuente
Tuve este problema al intentar inicializar log4net. Decidí hacer un constructor estático para Global.asax
fuente
El problema se produce principalmente cuando intenta reubicar el archivo Global.asax a otro directorio de soluciones. Vuelva a ubicar el archivo Global.asax nuevamente en la ubicación predeterminada. Funcionará como se esperaba.
fuente
Ninguna de las soluciones descritas anteriormente funcionó para mí. Sin embargo, reinstalar el paquete
usar nuget gui es un recorrido (no muy bueno)
fuente