2009-05-26 36 views
5

我在Visual Studio 2008調試器中沒有附加到默認網站的根目錄時遇到問題,因爲我在環境中運行時遇到了問題。Visual Studio調試器在網站根目錄時無法附加

我有一個運行在VS 2008 SP1上的.NET 3.5 Web應用程序項目。我已將項目設置爲「使用本地IIS Web服務器」,路徑爲「http://localhost/」。我能夠創建虛擬目錄,並且應用程序編譯良好。

我的問題是,當IE啓動調試器沒有連接。我能夠「附加到進程」並選擇「w3wp.exe」,它會調試得很好。這是一個PITA,我很好奇,如果有人知道爲什麼這不會自動附加?

我曾經在VD下運行這個完全相同的項目,並且從未遇到沒有附加調試器的問題。思考?

回答

0

我會嘗試使用管理員帳戶運行VS。

+0

我是管理員 – bechbd 2009-06-01 16:38:28

0

Web應用程序位於您網站的根目錄並且與您的虛擬目錄完全相同嗎?
行爲差異可能是由於您的網站項目的錯誤調試設置造成的。對於不同的調試方式有特殊的選擇。其中之一是即時附加調試器,並等待外部呼叫到網站(這是你可能需要的)。
web.config和IIS配置之間的差異也可能是不同行爲的原因。

+0

我將項目設置爲使用IIS,地址設置爲https://192.168.1.150,該地址被配置爲指向正確的目錄 – bechbd 2009-06-01 16:41:55

+0

您是否試圖打開http:// 192.168.1.150/而不是http:// localhost /? – okutane 2009-06-02 08:03:50

0

我在VS中使用這個宏,我將它連接到Visual Studio中的一個快捷鍵,它基本上做了什麼適合你,使用調試器附加到w3wp.exe。由於我有類似的問題與自動附件不完全按我預期的方式工作。對我來說這是一種享受。我也不喜歡IE自動啓動,因爲我通常在Firefox中測試。所以這個宏不會觸發我喜歡的IE自動啓動。

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

有具有相同討厭的行爲另一個原因。

如果您有一個包含多個網站項目的解決方案,那麼即使您只將其中一個網站項目設置爲啓動項目,Visual Studio也會啓動所有這些項目。但是,Visual Studio只會附加到您已配置爲啓動項目的網站。

也可以將解決方案配置爲擁有多個啓動項目。如果您以這樣的方式配置解決方案,即Visual Studio將啓動所有網站項目,那麼您將最終得到與上述相同的情況 - 即:每個網站項目都有一個正在運行的dev-webserver - 但具有可視化工作室附屬於所有網絡服務器。

相關問題