2009-05-01 11 views

Respuesta

1

Puede ser mejor cambiar el identity del proceso para que sepa a cuál adjuntar.

2

Puede usar esta macro VS para adjuntarla a un proceso de trabajo basado en el nombre de la aplicación. El único truco es que debe copiar Microsoft.Web.Administration.dll de C: \ Windows \ System32 \ inetsrv a% 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 

continuación:

Sub AttachToMyApp() 
    AttachToWorkerProcess("MyApp") 
End Sub 
Cuestiones relacionadas