Cambio del grupo de aplicaciones a través de un proyecto de implementación web
-
03-07-2019 - |
Pregunta
¿Hay alguna forma de configurar un proyecto de implementación web de Visual Studio 2005 para instalar una aplicación en un grupo de aplicaciones con nombre en lugar del grupo de aplicaciones predeterminado para un sitio web determinado?
Solución
Aquí hay un buen artículo que describe acciones personalizadas: Blog de ScottGu's
La pregunta que hiciste fue respondida casi a la mitad de los comentarios de 'Ryan', desafortunadamente está en VB, pero no debería ser difícil de traducir:
Private Sub assignApplicationPool(ByVal WebSite As String, ByVal Vdir As String, ByVal appPool As String)
Try
Dim IISVdir As New DirectoryEntry(String.Format("IIS://{0}/W3SVC/1/Root/{1}", WebSite, Vdir))
IISVdir.Properties.Item("AppPoolId").Item(0) = appPool
IISVdir.CommitChanges()
Catch ex As Exception
Throw ex
End Try
End Sub
Private strServer As String = "localhost"
Private strRootSubPath As String = "/W3SVC/1/Root"
Private strSchema As String = "IIsWebVirtualDir"
Public Overrides Sub Install(ByVal stateSaver As IDictionary)
MyBase.Install(stateSaver)
Try
Dim webAppName As String = MyBase.Context.Parameters.Item("TARGETVDIR").ToString
Dim vdirName As String = MyBase.Context.Parameters.Item("COMMONVDIR").ToString
Me.assignApplicationPool(Me.strServer, MyBase.Context.Parameters.Item("TARGETVDIR").ToString, MyBase.Context.Parameters.Item("APPPOOL").ToString)
Catch ex As Exception
Throw ex
End Try
End Sub
... Donde APPPOOL se suministra como un argumento en la Acción personalizada.
Otros consejos
Puede usar una CustomAction para modificar IIS durante la implementación. Aquí hay un artículo sobre cómo hacerlo: Modificación de servicios de información de Internet durante la implementación con acciones personalizadas
El ejemplo en el artículo está en VB.Net, y no muestra explícitamente cómo cambiar el grupo de aplicaciones, pero debería ser fácil resolverlo.