1
我正在使用以下函數來創建IIS7應用程序和/或虛擬目錄。使用.net更改IIS7中的默認應用程序池?
我該如何設置應用程序以使用不同的應用程序池?
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 then 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
其實 - 未畢竟工作。是否還有其他需要與之配合的設置?我甚至嘗試將VDir.Invoke(「AppCreate」,1)更改爲VDir.Invoke(「AppCreate」,2)用於POOLED,但那也不起作用。 – EdenMachine 2010-03-24 17:32:52
@EdenMachine - 我在本地運行你的代碼,它工作正常。你真的需要使用System.DirectoryServices嗎?使用Microsoft.Web.Administration在IIS7.x上執行此操作更容易。 – Kev 2010-03-25 02:57:33
是的,我使用了所有這些 - 如果能夠使其發揮作用,我會繼續嘗試。 – EdenMachine 2010-03-25 13:14:55