The Visual Studio debugger is not attaching when at the root of a website

谁都会走 提交于 2019-12-19 03:44:19

问题


I have a problem with my Visual Studio 2008 debugger not attaching to the root of the default website when I run from within the environment.

I have a .NET 3.5 Web application project running on Visual Studio 2008 SP1. I have set the project to "Use Local IIS Web server" with a path of "http://localhost/". I am able to create the Virtual Directory and the application compiles fine.

My problem is that when Internet Explorer launches, the debugger is not connected. I am able to "Attach to Process" and choose "w3wp.exe", and it will debug just fine. This is a PITA; why will it not automatically attach?

I used to run this exact same project under a VD and never had an issue with the debugger not attaching. Thoughts?


回答1:


The problem I was having was related to the fact that I had a tag in my web.config that surrounded my tag. This evidently causes the debugger to attach and then error out immediately without any sort of warning or error. Here is the article I used to figure this out:

Unable to debug Web Site with Top Level Location




回答2:


Is web applications at the root of your website and at your virtual directory is completely identical?
Differences of behavior may be result of incorrect debug settings for your web site project. There are special options for different ways of debugging. One of them is instant attaching of debugger and waiting for external call to website (this is the one you possibly need).
Differences between web.config and IIS configurations may also be the reasons of different behavior.




回答3:


I would try running Visual Studio using an administrator account.




回答4:


I use this macro in Visual Studio which I wire up to a shortcut key in Visual Studio. It basically does what works for you, attaching to w3wp.exe with the debugger.

I had similar issues with the auto attaching not exactly working the way I expected on occasions. For me this works a treat. I also don't like Internet Explorer firing up automatically as I usually test in Firefox. So this macro doesn't trigger Internet Explorer autostart, which I like.

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



回答5:


There is another cause that has the same nasty behavior.

If you have a solution that has multiple website projects, then Visual Studio will start all these projects, even if you have set only one of these website projects as the startup project. But, Visual Studio will only attach to the website that you have configured as startup project.

It's also possible to configure the solution to have multiple startup projects. If you configure the solution in such a way that Visual Studio will start all website projects then you will end up with the same situation as described above - that is: each website project has a running dev-webserver - but with the added advantage that Visual Studio is attached to all webservers.



来源:https://stackoverflow.com/questions/911250/the-visual-studio-debugger-is-not-attaching-when-at-the-root-of-a-website

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!