修改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>

修改web.通过c#插入在特定行的上方进行配置

您可以使用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)

希望你能理解这一点,请替换字符串,因为你想。