2009-05-01 62 views

回答

1

可能更好地更改過程的identity,以便您知道要附加哪一個。

2

您可以使用此VS宏根據應用程序名稱附加到工作進程。唯一的技巧是你需要將Microsoft.Web.Administration.dll從C:\ Windows \ System32 \ inetsrv複製到%PROGRAMFILES(x86)%\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ PublicAssemblies。

Private Sub AttachToWorkerProcess(ByVal appName As String) 
    Dim targetPid = FindPoolPIDByName(appName) 
    If targetPid = -1 Then 
     MessageBox.Show("Unable to find a worker process hosting " + appName) 
    End If 

    Dim processes As EnvDTE.Processes = DTE.Debugger.LocalProcesses 

    For Each proc As EnvDTE.Process In processes 
     If proc.ProcessID = targetPid Then 
      proc.Attach() 
     End If 
    Next 

End Sub 

Private Function FindPoolPIDByName(ByVal appName As String) As Integer 
    Dim sm As New Microsoft.Web.Administration.ServerManager() 

    Dim appPoolName As String = Nothing 
    For Each site In sm.Sites 
     For Each app In site.Applications 
      If String.Equals(app.Path, "/" & appName, StringComparison.OrdinalIgnoreCase) Then 
       appPoolName = app.ApplicationPoolName 
      End If 
     Next 
    Next 

    If appPoolName Is Nothing Then 
     MessageBox.Show("Unable to find application " & appName) 
    End If 

    For Each wp In sm.WorkerProcesses 
     If wp.AppPoolName = appPoolName Then 
      Return wp.ProcessId 
     End If 
    Next 
    Return -1 
End Function 

然後:

Sub AttachToMyApp() 
    AttachToWorkerProcess("MyApp") 
End Sub 
相關問題