2009-08-19 19 views
2

創建一個網站後,我注意到它將asp.net版本設置爲1.1。我想在代碼中將其更改爲版本2.0.50727。我發現在ScriptMaps屬性中有所有文件擴展名和代碼映射的字符串列表。但我還沒有想出如何更改所有連接到.net的值?或者有沒有辦法告訴它使用.invoke的其他版本?IIS 6.0 DirectoryEntry ScriptMaps屬性和設置.Net版本

回答

5
DirectoryEntry sited = new DirectoryEntry(string.Format("IIS://localhost/w3svc/{0}/Root", websiteID.ToString())); 
sited.Properties["AccessRead"].Add(true); 

PropertyValueCollection testScriptMap = sited.Properties["ScriptMaps"]; 

object[] allValues = (object[])testScriptMap.Value; 
object[] newValues = new object[allValues.Length]; 
string oldVersion = "v1.1.4322"; 
string newVersion = "v2.0.50727"; 
for (int i = 0; i < allValues.Length; i++) 
{ 
    if (allValues[i] is string) 
    { 
     string temp = allValues[i] as string; 
     if (temp.Contains(oldVersion)) 
     { 
      newValues[i] = temp.Replace(oldVersion, newVersion); 
     } 
     else 
     { 
      newValues[i] = allValues[i]; 
     } 
    } 
    else 
    { 
     newValues[i] = allValues[i]; 
    } 
} 
testScriptMap.Value = newValues;    

sited.CommitChanges(); 

小試錯後,我找到了解決辦法。我把創建的站點中的所有對象都做了一個副本,並在其中更改了路徑字符串的版本部分。然後,我將scriptMaps對象的value屬性設置爲指向新的更新對象數組。

1

一個簡單的方法是執行「aspnet_regiis -i」。 aspnet_regiis.exe文件將位於 - C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe

或者,您可以採取艱難的方式,並看看modification of IIS Metabase上的文章。

對我來說,採取更難的方法比簡單的方法要冷得多!

0

以下命令將安裝與該工具關聯的ASP.NET版本並更新所有現有ASP.NET應用程序的腳本映射。請注意,只有當前映射到早期版本的ASP.NET的應用程序纔會受到影響。

ASPNET_REGIIS -i

的是的Aspnet_regiis.exe在以下路徑:

C:\ WINDOWS \ Microsoft.NET \框架\ 「點網版本要更改爲」

你的情況將是下V2.0.50727:

C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727

來源:ASP.NET IIS Registration Tool

+0

鏈接已死亡。 – 2014-08-06 08:16:23