2009-05-01 8 views

答えて

1

プロセスのidentityを変更して、どのプロセスにアタッチするかを知っている方がよい場合があります。

2

このVSマクロを使用して、アプリケーション名に基づいてワーカープロセスにアタッチすることができます。 C:\ Windows \ System32 \ inetsrvから%PROGRAMFILES(x86)%\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ PublicAssembliesにMicrosoft.Web.Administration.dllをコピーする必要があります。その後

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 
関連する問題