当我在环境中运行时,我的Visual Studio 2008调试器没有附加到默认网站的根目录时出现问题。
我有一个在Visual Studio 2008 SP1上运行的.NET 3.5 Web应用程序项目。我已将项目设置为“使用本地IIS Web服务器”,路径为“http://localhost/”。我能够创建虚拟目录并且应用程序编译得很好。
我的问题是,当Internet Explorer启动时,调试器未连接。我能够“附加到进程”并选择“w3wp.exe”,它将调试就好了。这是一个PITA;为什么它不会自动附加?
我曾经在VD下运行这个完全相同的项目,并且从未遇到调试器没有附加的问题。想法?
答案 0 :(得分:15)
我遇到的问题与我的web.config中包含标签的标签有关。这显然会导致调试器立即附加然后出错,而不会出现任何警告或错误。以下是我用来解决这个问题的文章:
答案 1 :(得分:0)
我会尝试使用管理员帐户运行Visual Studio。
答案 2 :(得分:0)
网站根目录和虚拟目录中的网络应用程序是完全相同的吗? 行为差异可能是您的网站项目的不正确的调试设置的结果。有不同调试方式的特殊选项。其中一个是即时连接调试器并等待外部呼叫到网站(这是你可能需要的) web.config和IIS配置之间的差异也可能是行为不同的原因。
答案 3 :(得分:0)
我在Visual Studio中使用此宏,我将其连接到Visual Studio中的快捷键。它基本上适用于你,使用调试器附加到w3wp.exe。
我有类似的问题,自动连接不完全按照我预期的方式工作。对我来说,这是一种享受。我也不喜欢Internet Explorer自动启动,因为我通常在Firefox中测试。所以这个宏不会触发我喜欢的Internet Explorer自动启动。
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
答案 4 :(得分:0)
还有另一个原因具有相同的恶劣行为。
如果您的解决方案包含多个网站项目,那么Visual Studio将启动所有这些项目,即使您只将其中一个网站项目设置为启动项目。但是,Visual Studio将仅附加到您已配置为启动项目的网站。
也可以将解决方案配置为具有多个启动项目。如果您以Visual Studio将启动所有网站项目的方式配置解决方案,那么您将最终遇到与上述相同的情况 - 即:每个网站项目都有一个正在运行的dev-webserver - 但具有Visual的附加优势Studio附加到所有网络服务器。