2010-12-17 4 views
7

Estoy desarrollando en una máquina XP (SP3) con VS 2010 e IIS 5.¿Qué es debugattach.aspx y por qué el servidor no puede encontrarlo?

Tengo dos versiones del mismo sitio. Hemos lanzado nuestra primera versión de producción, así que bifurqué el código en un nuevo árbol de directorios y establecí nuevos directorios virtuales en IIS para apuntar a los nuevos árboles. Los proyectos están configurados para ejecutarse en IIS en lugar de en el servidor de VS. El sitio principal es un proyecto basado en MVC 2.

Mi problema es que, cuando presiono F5 en Visual Studio 2010 para comenzar a depurar la nueva versión, aparece "No se puede iniciar la depuración en el servidor web. El servidor web no pudo encontrar el recurso solicitado". Pasé la mayor parte de ayer tratando de descubrir qué recurso estaba buscando que no podía encontrar. Esto ocurre antes de que llegue al "Inicio de la aplicación". Finalmente pensé en buscar en los registros web, y encontré que cada vez que presiono la tecla F5, el registro web muestra una solicitud DEBUG para /debugattach.aspx, con un código de retorno de 404 (no encontrado). Si ejecuto la misma secuencia en la versión anterior, muestra lo mismo, pero primero con un código 401, y luego la solicitud se repite con un código 200.

Lo primero que pensé fue que VS debe escribir un archivo "debugattach.aspx" y luego invocarlo, y quizás no tenga permiso de escritura para el directorio, pero, por lo que yo sé, hace.

He buscado en debugattach.aspx, y las primeras páginas de artículos que se devuelven parecen referirse a bloqueos y tiempos de espera, principalmente en IIS 7 y VS 2005. Nada que parezca aplicarse a esta situación.

Al ver lo que es diferente entre la versión anterior que funciona y la nueva versión que no, las únicas cosas son la configuración de IIS de los directorios virtuales, y la web.config en el código en sí. Pero revisé los dos sitios uno al lado del otro y no puedo encontrar ninguna diferencia que explique este comportamiento.

¿Alguien tiene una pista que puedan compartir conmigo? ¿O puede alguien señalarme cualquier documentación sobre qué es/es exactamente debugattach.aspx, y qué hace una solicitud HTTP DEBUG, y/o cómo VS las usa?

Gracias de antemano.

+0

No tenga en cuenta. Encontré la solución. No lo entiendo, pero lo tengo para trabajar. Volví una vez más y comparé las propiedades IIS de los dos sitios uno al lado del otro, y descubrí una diferencia. En el mapeo de la extensión de la aplicación, donde había agregado aspnet_isapi.dll como mapeo comodín para que las URL sin extensión se ejecutaran a través de la asignación de MVC, la casilla de verificación "Motor de secuencias de comandos" estaba marcada en el sitio que no funcionaba y no se verificaba en el sitio que fue. Lo eliminé y lo intenté de nuevo, y comenzó la depuración. –

+0

aunque esta es una publicación anterior, todavía puede obtener crédito por publicar su propia respuesta =) – killthrush

Respuesta

-1

Agregue <compilation debug="true"> a su Web.config.

+0

SLaks, agradezco la respuesta, pero la depuración se ha establecido en verdadero desde el primer día de este proyecto. –

0

Me encontré con esto también. Desactivé Permitir extensiones de nombre de archivo no listadas configuración bajo Filtrado de solicitudes en mi servidor IIS local (para que coincida con nuestra configuración reforzada de seguridad en otros entornos). Resulta que .aspx estaba siendo bloqueado. Volví a activar la configuración y pude conectarme con el depurador. Así que lo apagué y agregué una asignación en el nivel de sitio para .aspx y puedo conectarme con el depurador una vez más.

Tengo curiosidad también por qué el depurador está buscando debugattach.aspx, y falla con este error. Especialmente porque mi aplicación es MVC y no necesito servir .aspx.

0

Tenía un mapa de script de comodín para la versión .NET 4 de aspnet_isapi.dll que estaba causando esto. Pude cambiar la asignación de secuencias de comandos para ignorar el verbo DEPURAR (usando solo los verbos que necesitaba para mi aplicación) y eso permitió que VS se adjunte automáticamente.

Habiendo dicho eso, terminé usando el servidor web de desarrollo VS o IIS Express para hacer que mi sitio funcione en una máquina XP, porque a IIS 5.1 no le gustaba la combinación del mapa de script comodín y el enrutamiento ASP.NET .

3

Basado en this old posting, DebugAttach.aspx se implementa mediante el controlador HTTP System.Web.HttpDebugHandler. Sin embargo, en realidad no vi este manejador referenciado en ningún lugar de IIS7; es posible que esta implementación se haya fusionado con algún otro controlador en el futuro. Definitivamente, algún tipo de controlador. Cuando está funcionando, verá 200 (éxito) mensajes en los registros.

Tuve este mismo problema de 2 maneras diferentes, donde la depuración F5 falló en VS2010 debido a un problema al llegar al controlador de depuración. Utilizando los registros de seguimiento de solicitudes fallidas de IIS, pude ver instancias en las que los módulos de IIS estaban interfiriendo. En una ocasión, UrlScan.dll estaba bloqueando el verbo DEPURAR. En otro, una redirección de HTTP a HTTPS hacía que el controlador de depuración devolviera un 302. En ambos casos, VS tenía un diálogo similar.

En cualquier caso, el truco aquí parece ser averiguar cómo se puede bloquear una solicitud DEPURAR a esta URL.

+2

Visual Studio registrará los errores relacionados con DebugAttach.aspx aquí:% UserProfile% \ AppData \ Local \ Temp \ Visual Studio Web Debugger.log (Si no tiene ese archivo - o si es un archivo antiguo - entonces su el problema probablemente no esté relacionado con DebugAttach.aspx). –

0

Si está ejecutando VS2010 o posterior, y tiene instalado .Net 4.xo posterior, intente cambiar el nombre del subdirectorio "v3.0" (por ejemplo, "cambiar el nombre de C: \ Windows \ Microsoft.Net \ Framework \ v3". 0 v3.0.ORIGINAL "), reinicie su máquina e intente depurar de nuevo en Visual Studio.

Esto ha estado funcionando como un hechizo sangriento para mí, pero su kilometraje puede variar, dependiendo del tipo de desarrollo que esté haciendo.

He estado ejecutando Visual Studio 2012 durante dos semanas como este, y realmente no puedo creer lo rápido que son las cosas (¡otra vez!). Lanzar el depurador con F5 ahora es instantáneo y detener la sesión de depuración también es instantáneo. Han cesado todo tipo de comportamientos con errores y lagrimeo, y hasta ahora no he visto un solo efecto secundario.

0

La solución que funciona para mí era reiniciar VStudio en el modo de ejecución de administrador.

Cuestiones relacionadas