我的asp.net网站上有一个自定义配置文件,名为urls.config
,其中包含简单的键值,仅用于重定向目的,现在我想以编程方式读取此文件并在此文件中添加值,我可以使用XMLTextReader和XMLDocument从此文件中读取值,但我无法在此文件中添加值。
任何帮助将不胜感激。 这是配置文件的结构:
<rewriteMaps>
<rewriteMap name="StaticRewrites" />
<add key="/superstars4012" value="/article.aspx?articleid=4012" />
<add key="/superstars4013" value="/article.aspx?articleid=4013" />
<add key="/superstars4014" value="/article.aspx?articleid=4014" />
<add key="/superstar" value="/article.aspx?articleid=4012" />
</rewriteMaps>
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("urls.config"));
XmlElement element = doc.CreateElement("add");
element.SetAttribute("key", txtAddVanity.Text);
element.SetAttribute("value", "/article.aspx?articleid=4012");
doc.DocumentElement.AppendChild(element);
doc.Save(Server.MapPath("urls.config"));
如果文件扩展名是.xml,这种方法很有效,但是当我将其更改为.config时,我的要求是.config,因为重定向在.xml中不起作用
答案 0 :(得分:1)
正如在这篇msdn帖子中雄辩地说的那样,在应用程序运行时修改web.config文件当然是可能的(因为它毕竟只是文本)但是在修改时会是一个非常糟糕的主意。配置文件将导致应用程序在服务器上重新启动 - 结束与当前用户的所有会话,并且所有新访问者都会看到错误页面,直到重新启动应用程序。当然不理想。
从代码的外观来看,
<add key="/superstar" value="/article.aspx?articleid=4012" />
您正在将URL从静态网址重写为动态查询字符串。有更好的方法来实现这一点。一个是IIS模块“用户友好的URL”。我很少遇到使用这个模块无法解决的问题。
其逻辑如下:
这对您的应用程序和用户来说更容易维护,也更安全。
-Cheers!