*(00)*

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  613 随笔 :: 0 文章 :: 45 评论 :: 159万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

配置文件在很多情况下都使用到, 配置文件分为两种 一种是应用程序的配置文件, 一种是web的配置文件.

两种配置文件最大的区别是web的配置文件更新之后会实时更新, 应用程序的配置文件不会实时更新.

更新应用程序的配置文件之后需刷新

ConfigurationManager.RefreshSection("appSettings");// 刷新命名节,在下次检索它时将从磁盘重新读取它。
ConfigurationSettings也存在这个问题, 但是我还不知道怎么刷新节点, 呵呵.

旧方法: 各位看官最好使用下面”新方法”

配置文件:

复制代码
<configuration> 
  <appSettings> 
    <add key="name" value="我是远程服务器"/> 
  </appSettings> 
</configuration>

后台程序值得读取:

string s=System.Configuration.ConfigurationSettings.AppSettings["name"];
复制代码

 

修改配置文件的值:

复制代码
/// <summary>
/// 更新配置文件信息
/// </summary>
/// <param name="name">配置文件字段名称</param>
/// <param name="Xvalue"></param>
private void UpdateConfig(string name,string Xvalue)
{
    XmlDocument doc = new XmlDocument();
    doc.Load(Application.ExecutablePath + ".config");
    XmlNode node = doc.SelectSingleNode(@"//add[@key='"+name+"']");
    XmlElement ele = (XmlElement)node;
    ele.SetAttribute("value", Xvalue);
    doc.Save(Application.ExecutablePath + ".config");
}
复制代码

 

向配置文件插入值:

复制代码
///<summary>  
///向.config文件的appKey结写入信息AppValue   保存设置  
///</summary>  
///<param name="AppKey">节点名</param>  
///<param name="AppValue"></param>
Private void SetValue(String AppKey,String AppValue)
{
    Xmldocument xDoc=new XmlDocument();
    xDoc.Load(System.Windows.Forms.Application.ExecutablePath+”.config”);
    XmlNode xNode;
    XmlElement xElem1;
    XmlElement xElem2;
    xNode=xDoc.SelectSingleNode(“//appSettings”);
    xElem1=(XmlElement)xNode.SelectSingleNode(“//add[@key=’”+AppKey+”’]”);
    if(xElem1!=null)
    xElem1.SetAttribute(“value”,AppValue);
    else
    {
        xElem2=xdoc.CreateElement(“add”);
        xElem2.SetAttribute(“key”,AppKey);
        xElem2.setAttribute(“value”,AppValue);
        xNode.AppendChild(xElem2);
    }
    xDoc.Save(System.Windows.Forms.Application.ExecutablePath+”.config”);
}
复制代码

 

 

 

新方法:

System.Configuration.ConfigurationSettings.AppSettings["Key"]; 
但是现在FrameWork2.0已经明确表示此属性已经过时。并建议改为ConfigurationManager或WebConfigurationManager。并且AppSettings属性是只读的,并不支持修改属性值.

但是要想调用ConfigurationManager必须要先在工程里添加system.configuration.dll程序集的引用。(在解决方案管理器中右键点击工程名称,在右键菜单中选择添加引用,.net TablePage下即可找到)添加引用后可以用 String str = ConfigurationManager.AppSettings["Key"]来获取对应的值了。

 

复制代码
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;

namespace 命名空间
{
    /// <summary>
    /// 对exe.Config文件中的appSettings段进行读写配置操作
    /// 注意:调试时,写操作将写在vhost.exe.config文件中
    /// </summary>
    public class ConfigAppSettings
    {
        /// <summary>
        /// 写入值
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        public static void SetValue(string key, string value)
        {
            //增加的内容写在appSettings段下 <add key="RegCode" value="0"/>
            System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
       //System.Configuration.Configuration config = WebConfigurationManager.OpenWebConfiguration("~");//web程序这样写
if (config.AppSettings.Settings[key] == null) { config.AppSettings.Settings.Add(key, value); } else { config.AppSettings.Settings[key].Value = value; } config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings");//重新加载新的配置文件 } /// <summary> /// 读取指定key的值 /// </summary> /// <param name="key"></param> /// <returns></returns> public static string GetValue(string key) { System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
       //System.Configuration.Configuration config = WebConfigurationManager.OpenWebConfiguration("~");//web程序这样写
if (config.AppSettings.Settings[key] == null) return ""; else return config.AppSettings.Settings[key].Value; } } }
复制代码

 

注意:ConfigurationManager.RefreshSection("appSettings");// 刷新命名节,在下次检索它时将从磁盘重新读取它。记住应用程序要刷新节点

 

 

posted on   *(00)*  阅读(535)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示