2011-10-03 131 views
1

我正在進行Web服務安裝。 我需要做的一件事是在默認網站下創建一個新的虛擬目錄。 問題是我需要爲該虛擬目錄設置一個不同的應用程序池(請不要問爲什麼......這些是要求,我無能爲力)。從代碼創建IIS應用程序

在IIS6中,因爲虛擬目錄和應用程序沒有區別,所以我沒有問題。 在IIS7中,不能將應用程序池設置爲虛擬目錄,因此我需要創建一個新的「應用程序」並將應用程序池附加到該應用程序池。

我在C#中找不到任何合理的示例/教程。我需要一些幫助:-)

謝謝。

回答

1

找到答案的地方在那裏。 我使用相同的代碼創建在IIS6虛擬目錄和IIS7應用:

DirectoryEntry defaultWebSite = GetWebSiteEntry(DEFAULT_WEB_SITE_NAME); 
    DirectoryEntry defaultWebSiteRoot = new DirectoryEntry(defaultWebSite.Path + "/Root"); 

    //Create and setup new virtual directory 
    DirectoryEntry virtualDirectory = defaultWebSiteRoot.Children.Add(applicationName, "IIsWebVirtualDir"); 

    virtualDirectory.Properties["Path"][0] = physicalPath; 
    virtualDirectory.Properties["AppFriendlyName"][0] = applicationName; 
    virtualDirectory.CommitChanges(); 

    // IIS6 - it will create a virtual directory 
    // IIS7 - it will create an application 
    virtualDirectory.Invoke("AppCreate", 1); 

    object[] param = { 0, applicationPoolName, true }; 
    virtualDirectory.Invoke("AppCreate3", param); 
+0

我無法找到'GetWebSiteEntry'。我在我的類庫中引用了System.Web,但找不到該方法的任何標誌。你能指出我的某些「使用」或我可能需要的參考嗎? – Cylindric

0

在C#中,您可以嘗試運行一些創建虛擬目錄的服務器端腳本。

採取類似的腳本: http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/5adfcce1-030d-45b8-997c-bdbfa08ea459.mspx?mfr=true

並與 '執行' 命令來運行它: http://www.codeproject.com/KB/cs/Execute_Command_in_CSharp.aspx

+0

曼塔斯:感謝對答覆,我已經熟悉了這些腳本(IIS7的有APPCMD),但我需要編寫ac#代碼,另外,使用這些腳本的事件我仍然不知道如何創建應用程序(虛擬目錄正常)。 –

相關問題