2013-10-29 60 views
3

是否可以使用c#在web config中動態添加位置標記?如何在web.config文件中創建<location>標籤?

例如,我想補充:

<location path="a/b"> 
    <system.web> 
     <authorization> 
     <allow users="xxx"/> 
     <deny users="*"/> 
     </authorization> 
    </system.web> 
    </location> 

文件夾B是在運行時創建的,我想添加到創建它的用戶的訪問。 創建的文件夾數量未知。

我使用表單身份驗證。

+2

我不確定可以這樣做,因爲在大多數情況下,配置文件只在進程啓動時讀取。如果您甚至可以在運行時更改它,我不確定您的更改會被拾取。您可能會更好地實施處理用戶名和請求路由的自定義安全提供程序。 – SouthShoreAK

+0

@SouthShoreAK我想這就像改變授權或連接字符串。如果你使用C#System.Configuration,那麼它是可能的。您可以添加一個實現自定義安全提供程序的參考嗎?它可以是有幫助的。謝謝! – Inbal

回答

1

@SouthShoreAK我不認爲可以這樣做,但總是有選擇,一種方法可以通過有一個基本的web.config,你可以編輯保存在每個文件夾中的你在你添加你需要的授權的時候創建,我在下面的代碼是這樣做的。

try 
{ 
    //Load the empty base configuration file 
    Configuration config = WebConfigurationManager.OpenWebConfiguration("~/WebEmpty.config"); 

    //Get te authorization section 
    AuthorizationSection sec = config.GetSection("system.web/authorization") as AuthorizationSection; 

    //Create the access rules that you want to add 
    AuthorizationRule allowRule = new AuthorizationRule(AuthorizationRuleAction.Allow); 
    allowRule.Users.Add("userName"); 
    //allowRule.Users.Add("userName2"); Here can be added as much users as needed 
    AuthorizationRule denyRule = new AuthorizationRule(AuthorizationRuleAction.Deny); 
    denyRule.Users.Add("*"); 

    //Add the rules to the section 
    sec.Rules.Add(allowRule); 
    sec.Rules.Add(denyRule); 

    //Save the modified config file in the created folder 
    string path = MapPath("~/NewFolder/Web.config"); 
    config.SaveAs(path); 

} 
catch (Exception ex) 
{ 
    //Handle the exceptions that could appear 
} 

你WebEmpty.config會是這樣

<?xml version="1.0"?> 
<configuration> 
</configuration> 

您保存的文件看起來像這樣

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.web> 
     <authorization> 
      <allow users="userName" /> 
      <deny users="*" /> 
     </authorization> 
    </system.web> 
</configuration> 

另一個要考慮的是創建的讀/寫權限配置文件,但我認爲你已經有了它,因爲動態文件夾的創建。

希望得到這個幫助。

+0

謝謝戴夫!聽起來不錯,我會試試看:) – Inbal

相關問題