2012-03-21 17 views
1

我在配置IIS時遇到問題。我以編程方式在網站下創建一個網站和一個應用程序(虛擬目錄)。在其他設置中,我在應用程序設置中添加了通配符應用程序映射。當IIS重新啓動時,它將刪除wilcard應用程序映射(以及其他一些設置,但爲了簡單起見,我只提到了wilcard映射)。我可以使用IIS管理器重新添加地圖,但是當我重新啓動IIS時,地圖將被刪除。但是 - 如果我添加通配符映射,然後在不重新啓動IIS的情況下,首先使用瀏覽器打開該應用程序中的頁面,然後任何後續的IIS重新啓動都不會導致映射消失。任何想法發生了什麼?IIS在停止時反轉網站設置

這裏是我的代碼:

// root virtual dir object 
string strRootVirtDirPath = "IIS://localhost/w3svc/" + strWebSiteID + "/root"; 
DirectoryEntry deRootVirtDir = new DirectoryEntry(strRootVirtDirPath); 

// add new virtual dir 
DirectoryEntry deNewVirtDir = deRootVirtDir.Children.Add(strAppName, "IIsWebVirtualDir"); 

deNewVirtDir.Properties["Path"].Value = strPhysicalDir; 
deNewVirtDir.Properties["AppFriendlyName"].Value = strAppName; 
deNewVirtDir.Properties["AppRoot"].Value = "/LM/W3SVC/" + strWebSiteID + "/Root/" + strAppName; 
deNewVirtDir.Properties["AppPoolId"].Value = strAppPoolName; 

// create the application 
deNewVirtDir.Invoke("AppCreate", 1); 

// commit changes 
deNewVirtDir.CommitChanges(); 
deRootVirtDir.CommitChanges(); 
deNewVirtDir.Close(); 
deRootVirtDir.Close(); 
+0

對不起,忘了提及它是IIS 6 – 2012-03-21 15:49:03

+0

您是否在創建虛擬目錄時正確調用.Invoke(「AppCreate」),然後在更新設置後調用.CommitChanges()? – AaronS 2012-03-21 16:26:33

+0

不知道如何驗證函數調用是否正確。代碼執行成功,我沒有任何例外。這是我的代碼: – 2012-03-22 19:08:25

回答

0

想通了這個問題。在Microsoft的知識庫文章286196:http://support.microsoft.com/kb/286196 中對此進行了介紹。所有受影響的機器都是Windows Server 2K3 R2,就像文章中所述。