修改web.通过c#插入在特定行的上方进行配置
本文关键字:方进行 配置 通过 web 插入 修改 | 更新日期: 2023-09-27 18:03:44
我创建了一个aspx页面,在这里我可以在文本框中输入一个名称,它将在我的web中的"授权"部分添加一行。配置文件(例如:'allow users="peter" '),问题是这行总是添加在'deny users="" '下面,这会自动阻止添加在该行下面的任何用户登录。有没有办法找到'拒绝用户="" '行通过我的c#代码和插入'允许用户'行上面?
感谢Default.aspx.cs(添加用户代码)
protected void btnWrite_Click(object sender, EventArgs e)
{
System.Configuration.Configuration configuration = WebConfigurationManager.OpenWebConfiguration("~");
AuthorizationSection authorization = (AuthorizationSection)configuration.GetSection("system.web/authorization");
AuthorizationRule accessRule = new AuthorizationRule(AuthorizationRuleAction.Allow);
accessRule.Users.Add(txtAddUser.Text);
authorization.Rules.Add(accessRule);
configuration.Save(ConfigurationSaveMode.Minimal);
}
网络。配置(授权部分)
<authentication mode="Forms">
<forms name=".ASPNET" loginUrl="login.aspx" defaultUrl="Default/default.aspx" />
</authentication>
<authorization>
<allow users="john" />
<deny users="*" />
<allow users="peter" />
<allow users="david" />
</authorization>
您可以使用linq来选择授权的后代,并在您想要的第一个或最后一个位置添加元素
你可以这样写
XDocument xDoc = new XDocument(@"your config file name. extention");
xDoc.Element("authorization")
.Elements("allow")
.Where(item => item.Attribute("users").Value == "john").FirstOrDefault()
.AddAfterSelf(new XElement("allow", new XAttribute("users", "put the user name your want here")));
要使用此功能,您需要在顶部添加using语句(使用system.linq)
希望你能理解这一点,请替换字符串,因为你想。