日期:2014-05-18  浏览次数:20492 次

修改web.config后,无法读取最新值
q我的程序中有个install.aspx 安装页面,在安装页面中配置数据库连接,还有一些系统信息,比如系统名称,写在了appSettings里面
   
但配置完程序后,在程序中读取的appSettings的值,还是修改以前的值,如果不在install.aspx 中修改,直接手动修改web.config ,读取出来的就是最新值,不知道怎么回事,请高手解答,是否是缓存或者其它问题
下面的方法是修改web.config 的值一个方法,这个方法结果肯定是没问题,能修改成功,就是修改完后,读取不到最新值


  public static void ModifyWebConfigNode(string key, string strValue)
  {
  string XPath = "/configuration/appSettings/add[@key='?']";
  XmlDocument domWebConfig = new XmlDocument();

  domWebConfig.Load((HttpContext.Current.Server.MapPath("web.config")));
  XmlNode addKey = domWebConfig.SelectSingleNode((XPath.Replace("?", key)));
  if (addKey == null)
  {
  throw new ArgumentException("没有找到<add key='" + key + "' value=.../>的配置节");
  }
  addKey.Attributes["value"].InnerText = strValue;
  domWebConfig.Save((HttpContext.Current.Server.MapPath("~/Web.config")));
   

  }

------解决方案--------------------
web服务在启动的时候就会把web.config的值等 都会读到缓存中;
但是.net会有一个事件一直监视这个web.config文件,如果web.config有变化,新的web请求就会执行新的web.config,
但是因为你修改后你的当前用户比没有从新的发出新的请求,所以web服务还是执行原来的进程,读到的东西就是老的,
如果你修改成功后,你在新打开一个窗口,这个窗口读到的就是新的值;