是否可以在Web配置中使用c#动态添加位置标记?
例如,我想添加:
<location path="a/b">
<system.web>
<authorization>
<allow users="xxx"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
文件夹b是在运行时创建的,我想添加对创建它的用户的访问权限。 创建的文件夹数量未知。
我使用表单身份验证。
答案 0 :(得分: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>
要考虑的另一件事是创建配置文件的读/写权限,但我认为你已经拥有它,因为动态文件夹创建。
希望得到这个帮助。