【发布时间】:2011-06-10 21:54:22
【问题描述】:
我在我的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 中不起作用
【问题讨论】:
-
您要添加值吗?您是否意识到修改 web.config 会卸载托管您的应用程序的应用程序域? web.config 用于应用程序的只读配置值。如果您想从应用程序中动态更新配置值,请使用数据库或其他东西。
-
实际上我已经在 web.config 中定义了重写,只是为了单独的重定向文件,我已经指定了
并且所有的重定向都放在这个文件中...... . -
@Abbas,这没关系。即使是用
configSource引用的外部文件也会被 ASP.NET 跟踪,修改它们与修改原始 web.config => 从内存中卸载应用程序域具有完全相同的效果。这是你想要的吗? -
我不想更新 web.config 文件,只需要更新包含上述键值的 urls.config 文件...
-
@Abbas,好吧,如果 web.config 和这个 urls.config 文件之间没有关系,那么只需使用 XmlReader 和 XmlWriter。但正如我所说,如果您使用
configSource从您的 web.config 中指向 urls.config,如果您修改 urls.config,您的应用程序将重新启动。
标签: asp.net web-config configuration-files config