I'm using the following function to create an IIS7 Application and/or Virtual Directory.
How would I also set the Application to use a different Application Pool?
Private Sub CreateVirtualDir(ByVal WebSite As String, ByVal AppName As String, ByVal Path As String, Optional ByVal IsApplication As Boolean = True, Optional ByVal RunScripts As Boolean = True, Optional ByVal IsWrite As Boolean = True)
Dim IISSchema As New System.DirectoryServices.DirectoryEntry( _
"IIS://" & WebSite & "/Schema/AppIsolated")
Dim CanCreate As Boolean = _
Not IISSchema.Properties("Syntax").Value.ToString.ToUpper() = "BOOLEAN"
IISSchema.Dispose()
If CanCreate Then
Dim PathCreated As Boolean
Try
Dim IISAdmin As New System.DirectoryServices.DirectoryEntry( _
"IIS://" & WebSite & "/W3SVC/1/Root")
''make sure folder exists
If Not System.IO.Directory.Exists(Path) Then
System.IO.Directory.CreateDirectory(Path)
PathCreated = True
End If
''If the virtual directory already exists the开发者_如何转开发n delete it
For Each VD As System.DirectoryServices.DirectoryEntry In IISAdmin.Children
If VD.Name = AppName Then
IISAdmin.Invoke("Delete", New String() {VD.SchemaClassName, AppName})
IISAdmin.CommitChanges()
Exit For
End If
Next VD
''Create and setup new virtual directory
Dim VDir As System.DirectoryServices.DirectoryEntry = _
IISAdmin.Children.Add(AppName, "IIsWebVirtualDir")
VDir.Properties("Path").Item(0) = Path
If IsApplication Then
VDir.Properties("AppFriendlyName").Item(0) = AppName
End If
VDir.Properties("EnableDirBrowsing").Item(0) = False
VDir.Properties("AccessRead").Item(0) = True
VDir.Properties("AccessExecute").Item(0) = False
VDir.Properties("AccessWrite").Item(0) = IsWrite
VDir.Properties("AccessScript").Item(0) = RunScripts
VDir.Properties("AuthNTLM").Item(0) = True
VDir.Properties("EnableDefaultDoc").Item(0) = True
VDir.Properties("DefaultDoc").Item(0) = "default.htm,default.aspx,default.asp"
VDir.Properties("AspEnableParentPaths").Item(0) = True
''VDir.Properties("AppCreate").Item(0) = False
VDir.CommitChanges()
''the following are acceptable params
''INPROC = 0
''OUTPROC = 1
''POOLED = 2
If IsApplication Then
VDir.Invoke("AppCreate", 1)
Else
VDir.Invoke("AppCreate", False)
End If
Catch Ex As Exception
If PathCreated Then
System.IO.Directory.Delete(Path)
End If
''MsgBox(Ex.Message)
End Try
End If
End Sub
Just before you do VDir.CommitChanges()
insert this line:
VDir.Properties("AppPoolId").Item(0) = "<your_app_pool_name>"
精彩评论