1

我创建了一个 aspx 页面,我可以在其中将名称输入到 texbox 中,它会在我的 web.config 文件中的“自动化”部分下添加一行(例如“允许用户 =“彼得”'),问题是该行总是添加在'deny users=" "'下面,它会自动阻止在该行下面添加的任何用户登录。有没有办法通过我的C#代码找到'deny users=""'行并插入'allow users'上面的线?

谢谢

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); 
}

Web.config(授权部分)

  <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>
4

2 回答 2

0

你可以使用这样的东西

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)

希望您能理解这一点,请根据需要替换字符串。

于 2013-03-14T06:11:56.350 回答
0

您可以使用 linq 选择授权的后代,并将元素添加到您想要的第一个或最后一个元素

于 2013-03-14T05:26:16.940 回答