Configuration类在网页实现对web.config的修改
【IT168技术文档】
一、ConfigurationManager.OpenExeConfiguration的问题
ConfigurationManager.OpenExeConfiguration有两个重载,
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal)和ConfigurationManager.OpenExeConfiguration(Server.MapPath("web.config"));
经过实验我发现,在网上上,ConfigurationManager.OpenExeConfiguration (ConfigurationUserLevel.PerUserRoamingAndLocal)不能使用,而Configuration和
ConfigurationManager.OpenExeConfiguration其实不能直接对文件进行修改。
Configuration cfg = ConfigurationManager.OpenExeConfiguration(Server.MapPath("web.config")); Response.Write(cfg.FilePath);
你会发现以上代码输出的FilePath是F:\路径\Web\web.config.config
。打开的文件虽然看的是web.config,其实是另外一个文件web.config.config,虽然web.config.config并不存在。
而进行以下操作
Configuration cfg = ConfigurationManager.OpenExeConfiguration(Server.MapPath("web.config")); cfg.AppSettings.Settings.Remove("123"); cfg.AppSettings.Settings.Add("123","asdasd"); cfg.Save();
读不出web.config的内容,而实际上是读的web.config.config的内容。我们现在没这个文件,那么内容就是空的。保存之后,得到
<?xml version="1.0" encoding="utf-8"?><configuration><appSettings><add key="123" value="asdasd"/></appSettings></configuration>
二、引出来的思路
可以建立个文件web.config.config,作为web.config的副本。
再次执行
Configuration cfg = ConfigurationManager.OpenExeConfiguration(Server.MapPath("web.config")); cfg.AppSettings.Settings.Remove("123"); cfg.AppSettings.Settings.Add("123","asdasd"); Response.Write(cfg.FilePath); cfg.SaveAs(Server.MapPath("web.config"));
操作,则确实实现了对文件的修改。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。