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

解决方案 »

  1.   

    能修改成功,就是修改完后,读取不到最新值?
    //就是说你看到web.config中已经把值也进去了,就是读的时候还是原来的值,对吗?
      

  2.   

    恩,就是那种情况 
    必须重启WEB服务吗?
      

  3.   

    修改后app会重启,session,application都会丢失你确定你的修改成功了吗?
      

  4.   

    修改肯定是成功了,可以在web.config里面能看到修改后的值,但读取出来就是原来的值,真是怪事了 
    搞了好久了
      

  5.   

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