2009-05-26 9 views
5

Tengo un problema con mi depurador Visual Studio 2008 que no se adjunta a la raíz del sitio web predeterminado cuando se ejecuta desde el entorno.Depurador de Visual Studio No se adjunta cuando está en la raíz de un sitio web

Tengo un proyecto de aplicación web .NET 3.5 ejecutándose en VS 2008 SP1. Establecí el proyecto en "Usar servidor web IIS local" con una ruta de "http://localhost/". Puedo crear el directorio virtual y la aplicación compila bien.

Mi problema es que cuando IE se inicia, el depurador no está conectado. Puedo "Adjuntar para procesar" y elegir "w3wp.exe" y se depurará muy bien. Este es un PITA y tenía curiosidad si alguien supiera por qué esto no se adjuntará automáticamente.

Solía ​​ejecutar exactamente este mismo proyecto en un VD y nunca tuve un problema con el depurador no adjuntando. ¿Pensamientos?

Respuesta

16

El problema que tenía estaba relacionado con el hecho de que tenía una etiqueta en mi web.config que rodeaba mi etiqueta. Esto causa evidentemente que el depurador se adjunte y luego se produzca un error de inmediato sin ningún tipo de advertencia o error. Aquí está el artículo que solía resolver esto:

http://www.west-wind.com/WebLog/posts/466163.aspx

+0

¡Ojalá pudiera recordarte varias veces! –

+1

Esto me salvó totalmente.Mi problema era que había incluido una etiqueta alrededor de mis etiquetas (por razones que no mencionaré) y que causaba la falla del depurador. Eliminarlo resolvió el problema. ¡Gracias! – jeremcc

+0

¡Esto acaba de salvar mi trasero a lo grande! –

0

Intentaré ejecutar VS usando la cuenta de administrador.

+0

Soy administrador – bechbd

0

¿Las aplicaciones web en la raíz de su sitio web y en su directorio virtual son completamente idénticas?
Las diferencias de comportamiento pueden ser el resultado de la configuración incorrecta de depuración para su proyecto de sitio web. Hay opciones especiales para diferentes formas de depuración. Uno de ellos es la instalación instantánea de un depurador y la espera de una llamada externa al sitio web (este es el que posiblemente necesite).
Las diferencias entre las configuraciones web.config e IIS también pueden ser las razones de un comportamiento diferente.

+0

Tengo la configuración en el proyecto configurado para usar IIS con la dirección establecida en https://192.168.1.150 que está configurada para apuntar al directorio correcto – bechbd

+0

¿Intentó abrir http: // 192.168.1.150/ en lugar de http: // localhost /? – okutane

0

Utilizo esta macro en VS que cableo a una tecla de método abreviado en Visual Studio, básicamente hace lo que funciona para usted, adjunte w3wp.exe con el depurador. Como tuve problemas similares con la fijación automática no funcionaba exactamente como esperaba en ocasiones. Para mí, esto funciona como un regalo. Tampoco me gusta que el IE se active automáticamente ya que normalmente lo pruebo en Firefox. Entonces esta macro no activa el autostart de IE que me gusta.

Imports System 
Imports EnvDTE 
Imports EnvDTE80 
Imports EnvDTE90 
Imports System.Diagnostics 

Public Module AttachToWebServer 

    Public Sub AttachToWebServer() 

     Dim AspNetWp As String = "aspnet_wp.exe" 
     Dim W3WP As String = "w3wp.exe" 

     If Not (AttachToProcess(AspNetWp)) Then 
      If Not AttachToProcess(W3WP) Then 
       System.Windows.Forms.MessageBox.Show(String.Format("Process {0} or {1} Cannot Be Found", AspNetWp, W3WP), "Attach To Web Server Macro") 
      End If 
     End If 

    End Sub 

    Public Function AttachToProcess(ByVal ProcessName As String) As Boolean 
     Try 
      Dim ProcessFound As Boolean = False 
      Dim dbg2 As EnvDTE80.Debugger2 = DTE.Debugger 
      Dim trans As EnvDTE80.Transport = dbg2.Transports.Item("Default") 
      Dim dbgeng(10) As EnvDTE80.Engine 
      Dim indexer As Integer = 0 

      For Each myEngine As Engine In trans.Engines 
       'Possible values here could be "T-SQL","Native","Managed","Workflow" "Managed/Native", "Script" 
       If myEngine.Name.Equals("Managed") Then 
        dbgeng(indexer) = myEngine 
        indexer += 1 
       End If 
      Next 

      Dim processes As EnvDTE.Processes = dbg2.GetProcesses(trans, "localhost") 
      For Each Process As EnvDTE80.Process2 In processes 
       If Process.Name.Contains(ProcessName) Then 
        Process.Attach2(dbgeng) 
        ProcessFound = True 
       End If 
      Next 
      Return ProcessFound 
     Catch ex As System.Exception 
      MsgBox(ex.Message) 
     End Try 
    End Function 

End Module 
0

Hay otra causa que tiene el mismo comportamiento desagradable.

Si tiene una solución que tiene múltiples proyectos de sitio web, entonces visual studio iniciará todos estos proyectos, incluso si ha configurado solo uno de estos proyectos como el proyecto de inicio. Pero, visual studio solo se adjuntará al sitio web que haya configurado como proyecto de inicio.

También es posible configurar la solución para tener varios proyectos de inicio. Si configura la solución de forma que Visual Studio inicie todos los proyectos del sitio web, terminará en la misma situación descrita anteriormente, es decir, cada proyecto de sitio web tiene un servidor web dev en ejecución, pero con la ventaja añadida de que studio está conectado a todos los servidores web.

Cuestiones relacionadas