2012-12-03 46 views
0

我在單個web.config文件中有兩個位置元素,並且希望更改後面代碼中的授權。將多個位置元素的授權部分設置在一個web.config後面的代碼中

的Web.config位置部分是這樣的:

<configuration> 
    <location path="~"> 
    <system.web> 
     <compilation debug="false" targetFramework="4.0"/> 
     <authorization> 
     <allow roles=""/> 
     <deny users="*"/> 
     </authorization> 
    </system.web> 
    </location> 

    <location path="~/SubPage"> 
    <system.web> 
     <compilation debug="false" targetFramework="4.0"/> 
     <authorization> 
     <allow roles=""/> 
     <deny users="*"/> 
     </authorization> 
    </system.web> 
    </location> 
</configuration> 

從後面的代碼,我想經過位置的元素,然後進行更改到特定位置的元素。例如,後面的C#代碼將是:

Configuration myConfig = WebConfigurationManager.OpenWebConfiguration("~"); 
ConfigurationLocationCollection locations = myConfig.Locations; 
foreach (ConfigurationLocation location in locations) 
{ 
    if (location.Path = "~") 
    { 
    //define & clear the authorization section of the particular location element. 
    //create and apply rule for allow in that authorization section. 
    //create and apply rule for deny in that authorization section. 
    //save the change 

    } 

    if (location.Path = "~/SubPage") 
    { 
    //define & clear the authorization section of the particular location element. 
    //create and apply rule for allow in that authorization section. 
    //create and apply rule for deny in that authorization section. 
    //save the change 

    } 

} 

我在這裏嘗試了幾種不同的東西,但我沒有一個解決方案,實際工作至今...我需要consoldiate任何更改網頁。 (〜)中的配置(任何更改都必須反映在此文件中,而不是子頁中的其他文件)。任何推薦的工作解決方案來填補空白?其目的是允許管理員用戶在管理用戶界面上進行更改,以決定允許內部網絡上的哪些用戶或Windows組查看這兩個位置,所以我特別想從後面的代碼中更改允許的角色。 謝謝。

回答

0

經過多次嘗試,放棄嘗試對同一個文件進行所有更改,而只是在每個location.Path中打開一個新的配置管理器實例。

WebConfigurationManager.OpenWebConfiguration(location.Path),然後將規則應用於每個位置的每個單獨的web.config。我無法將所有授權集中在一個地方,但至少它在工作。

+0

請您分享一下這個想法或代碼,這是與您合作,實際上我現在需要同樣的東西:) – Raghurocks

+0

http://go4answers.webhost4life.com/Example/programmatically-update-authorization-170136。 ASPX – fa1c0n3r

相關問題