问题 通过Web部署项目更改应用程序池


有没有办法配置Visual Studio 2005 Web部署项目以将应用程序安装到命名的应用程序池而不是给定网站的默认应用程序池?


12454
2017-10-03 14:45


起源



答案:


这里有一篇描述自定义操作的好文章: ScottGu的博客

你问的问题是在'Ryan'评论的中间回答的,不幸的是它在VB中,但翻译起来应该不难:

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

... APPPOOL在自定义操作中作为参数提供。


12
2017-10-03 18:58



我正在为我的设置中的2个Web应用程序执行此操作 - 它适用于第二个Web应用程序的“Web自定义文件夹”,但对于默认情况下获得的“Web应用程序文件夹”,它将设置应用程序自定义操作期间的池 - 但在完成后将其设置为默认应用程序。 - Mampersat


答案:


这里有一篇描述自定义操作的好文章: ScottGu的博客

你问的问题是在'Ryan'评论的中间回答的,不幸的是它在VB中,但翻译起来应该不难:

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

... APPPOOL在自定义操作中作为参数提供。


12
2017-10-03 18:58



我正在为我的设置中的2个Web应用程序执行此操作 - 它适用于第二个Web应用程序的“Web自定义文件夹”,但对于默认情况下获得的“Web应用程序文件夹”,它将设置应用程序自定义操作期间的池 - 但在完成后将其设置为默认应用程序。 - Mampersat


您可以使用CustomAction在部署期间修改IIS,以下是一篇如何执行此操作的文章: 使用自定义操作部署期间修改Internet信息服务

本文中的示例是在VB.Net中,并未明确显示如何更改应用程序池,但应该很容易弄清楚。


3
2017-10-03 19:02