2010-03-23 130 views
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 

回答

1

VDir.CommitChanges()插入此線就在:

VDir.Properties("AppPoolId").Item(0) = "<your_app_pool_name>" 
+0

其實 - 未畢竟工作。是否還有其他需要與之配合的設置?我甚至嘗試將VDir.Invoke(「AppCreate」,1)更改爲VDir.Invoke(「AppCreate」,2)用於POOLED,但那也不起作用。 – EdenMachine 2010-03-24 17:32:52

+0

@EdenMachine - 我在本地運行你的代碼,它工作正常。你真的需要使用System.DirectoryServices嗎?使用Microsoft.Web.Administration在IIS7.x上執行此操作更容易。 – Kev 2010-03-25 02:57:33

+0

是的,我使用了所有這些 - 如果能夠使其發揮作用,我會繼續嘗試。 – EdenMachine 2010-03-25 13:14:55

相關問題