真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

DotNet程序配置文件-創(chuàng)新互聯(lián)

在實(shí)際的項(xiàng)目開發(fā)中,對(duì)于項(xiàng)目的相關(guān)信息的配置較多,在.NET項(xiàng)目中,我們較多的將程序的相關(guān)配置直接存儲(chǔ)的.config文件中,例如web.config和app.config。

我們一直強(qiáng)調(diào)網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)對(duì)于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對(duì)待,選擇一個(gè)安全靠譜的網(wǎng)站建設(shè)公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過程中的有力推手。專業(yè)網(wǎng)絡(luò)公司不一定是大公司,創(chuàng)新互聯(lián)建站作為專業(yè)的網(wǎng)絡(luò)公司選擇我們就是放心。

  .NET中配置文件分為兩部分:配置的實(shí)際內(nèi)容(位于appSetting節(jié)點(diǎn));指定了節(jié)點(diǎn)的處理程序(位于configSections節(jié)點(diǎn))。

  在.NET程序中,.config文件存儲(chǔ)相關(guān)配置是以xml格式,如果我們需要對(duì)配置文件進(jìn)行讀取和寫入,以及相關(guān)節(jié)點(diǎn)的刪除,我們可以直接采用處理xml文件的方式進(jìn)行操作。也可以采用.NET提供的類System.Configuration進(jìn)行相關(guān)操作。

 在System.Configuration類型中,對(duì)外提供了幾種方法調(diào)用,在這里介紹三種較為常用的:AppSettings,ConnectionStrings,GetSection。

 接下來看一下這些方法:

  1.AppSettings屬性:

/// 
    /// 獲取當(dāng)前應(yīng)用程序默認(rèn)配置的  數(shù)據(jù)。
    /// 
    /// 
    /// 
    /// 返回一個(gè)  對(duì)象,該對(duì)象包含當(dāng)前應(yīng)用程序默認(rèn)配置的  對(duì)象的內(nèi)容。
    /// 
    /// 未能使用應(yīng)用程序設(shè)置數(shù)據(jù)檢索  對(duì)象。
    public static NameValueCollection AppSettings { get; }

2.ConnectionStrings屬性:

/// 
    /// 獲取當(dāng)前應(yīng)用程序默認(rèn)配置的  數(shù)據(jù)。
    /// 
    /// 
    /// 
    /// 返回一個(gè)  對(duì)象,該對(duì)象包含當(dāng)前應(yīng)用程序默認(rèn)配置的  對(duì)象的內(nèi)容。
    /// 
    /// 未能檢索  對(duì)象。
    public static ConnectionStringSettingsCollection ConnectionStrings { get; }

3.GetSection方法:

/// 
    /// 檢索當(dāng)前應(yīng)用程序默認(rèn)配置的指定配置節(jié)。
    /// 
    /// 
    /// 
    /// 指定的  對(duì)象,或者,如果該節(jié)不存在,則為 null。
    /// 
    /// 配置節(jié)的路徑和名稱。未能加載配置文件。
    public static object GetSection(string sectionName);

以上對(duì)幾種方法進(jìn)行了說明,接下來我們具體看一下在項(xiàng)目中對(duì)配置文件的操作:

  1.獲取配置值:

        /// 
        /// 獲取配置值
        /// 
        /// 節(jié)點(diǎn)名稱
        /// 
        public static string GetAppSettingValue(string key)
        {
            if (string.IsNullOrEmpty(key))
            {
                throw new ArgumentNullException(key);
            }
            return ConfigurationManager.AppSettings[key];
        }

2.獲取連接字符串:

        /// 
        /// 獲取連接字符串
        /// 
        /// 連接字符串名稱
        /// 
        public static string GetConnectionString(string name)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException(name);
            }
            return ConfigurationManager.ConnectionStrings[name].ConnectionString;
        }

3.獲取節(jié)點(diǎn)的所有屬性(處理單個(gè)節(jié)點(diǎn)):

         /// 
        /// 獲取節(jié)點(diǎn)的所有屬性(處理單個(gè)節(jié)點(diǎn))
        /// 
        /// 節(jié)點(diǎn)名稱
        /// 屬性的Hashtable列表
        public static Hashtable GetNodeAttribute(string name)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException(name);
            }
            return (Hashtable)ConfigurationManager.GetSection(name);
        }

 以上的是三種獲取配置文件的相關(guān)節(jié)點(diǎn)的操作,以下提供幾種全局的寫入和刪除操作方法:

  4.設(shè)置配置值(存在則更新,不存在則新增):

        /// 
        /// 設(shè)置配置值(存在則更新,不存在則新增)
        /// 
        /// 節(jié)點(diǎn)名稱
        /// 節(jié)點(diǎn)值
        public static void SetAppSettingValue(string key, string value)
        {
            if (string.IsNullOrEmpty(key))
            {
                throw new ArgumentNullException(key);
            }
            if (string.IsNullOrEmpty(value))
            {
                throw new ArgumentNullException(value);
            }
            try
            {
                var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                var setting = config.AppSettings.Settings[key];
                if (setting == null)
                {
                    config.AppSettings.Settings.Add(key, value);
                }
                else
                {
                    setting.Value = value;
                }

                config.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("appSettings");
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

5.刪除配置值:

        /// 
        /// 刪除配置值
        /// 
        /// 節(jié)點(diǎn)名稱
        public static void RemoveAppSetting(string key)
        {
            if (string.IsNullOrEmpty(key))
            {
                throw new ArgumentNullException(key);
            }
            try
            {
                var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                config.AppSettings.Settings.Remove(key);
                config.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("appSettings");
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

6.設(shè)置連接字符串的值(存在則更新,不存在則新增):

        /// 
        /// 設(shè)置連接字符串的值(存在則更新,不存在則新增)
        /// 
        /// 名稱
        /// 連接字符串
        /// 程序名稱屬性
        public static void SetConnectionString(string name, string connstr, string provider)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException(name);
            }
            if (string.IsNullOrEmpty(connstr))
            {
                throw new ArgumentNullException(connstr);
            }
            if (string.IsNullOrEmpty(provider))
            {
                throw new ArgumentNullException(provider);
            }
            try
            {
                var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                var connStrSettings = config.ConnectionStrings.ConnectionStrings[name];
                if (connStrSettings != null)
                {
                    connStrSettings.ConnectionString = connstr;
                    connStrSettings.ProviderName = provider;
                }
                else
                {
                    connStrSettings = new ConnectionStringSettings(name, connstr, provider);
                    config.ConnectionStrings.ConnectionStrings.Add(connStrSettings);
                }

                config.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("connectionStrings");
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

7.刪除連接字符串配置項(xiàng):

        /// 
        /// 刪除連接字符串配置項(xiàng)
        /// 
        /// 字符串名稱
        public static void RemoveConnectionString(string name)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException(name);
            }
            try
            {
                var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                config.ConnectionStrings.ConnectionStrings.Remove(name);
                config.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("connectionStrings");
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

 以上的幾種新增和刪除操作中,如果測(cè)試過就會(huì)發(fā)現(xiàn)本地的.config文件中沒有對(duì)應(yīng)的新增節(jié)點(diǎn),以及需要?jiǎng)h除的文件節(jié)點(diǎn)也沒有刪除掉。這個(gè)原因主要是”在新增appSettings節(jié)點(diǎn)時(shí),不會(huì)寫入App.config或web.config中,因?yàn)锳ppSetting這樣的節(jié)點(diǎn)屬于內(nèi)置節(jié)點(diǎn),會(huì)存儲(chǔ)在Machine.config文件中。.NET內(nèi)置的處理程序定義于machine.config中,提供全局服務(wù),無須進(jìn)行任何額外工作就可以直接使用。“

 如果需要對(duì)項(xiàng)目中的配置文件進(jìn)行新增和刪除操作,現(xiàn)在提供一種方法,采用對(duì)xml文件的操作方式:

   8.更新或新增[appSettings]節(jié)點(diǎn)的子節(jié)點(diǎn)值,存在則更新子節(jié)點(diǎn)Value,不存在則新增子節(jié)點(diǎn),返回成功與否布爾值:

        /// 
        /// 更新或新增[appSettings]節(jié)點(diǎn)的子節(jié)點(diǎn)值,存在則更新子節(jié)點(diǎn)Value,不存在則新增子節(jié)點(diǎn),返回成功與否布爾值
        /// 
        /// 配置文件的路徑
        /// 子節(jié)點(diǎn)Key值
        /// 子節(jié)點(diǎn)value值
        /// 返回成功與否布爾值
        public static bool UpdateOrCreateAppSetting(string filename, string key, string value)
        {
            if (string.IsNullOrEmpty(filename))
            {
                throw new ArgumentNullException(filename);
            }
            if (string.IsNullOrEmpty(key))
            {
                throw new ArgumentNullException(key);
            }
            if (string.IsNullOrEmpty(value))
            {
                throw new ArgumentNullException(value);
            }
            var doc = new XmlDocument();
            //加載配置文件
            doc.Load(filename);
            //得到[appSettings]節(jié)點(diǎn)
            var node = doc.SelectSingleNode("http://appSettings");
            try
            {
                //得到[appSettings]節(jié)點(diǎn)中關(guān)于Key的子節(jié)點(diǎn)
                if (node != null)
                {
                    var element = (XmlElement)node.SelectSingleNode("http://add[@key='" + key + "']");
                    if (element != null)
                    {
                        //存在則更新子節(jié)點(diǎn)Value
                        element.SetAttribute("value", value);
                    }
                    else
                    {
                        //不存在則新增子節(jié)點(diǎn)
                        var subElement = doc.CreateElement("add");
                        subElement.SetAttribute("key", key);
                        subElement.SetAttribute("value", value);
                        node.AppendChild(subElement);
                    }
                }
                //保存至配置文件(方式一)
                using (var xmlwriter = new XmlTextWriter(filename, null))
                {
                    xmlwriter.Formatting = Formatting.Indented;
                    doc.WriteTo(xmlwriter);
                    xmlwriter.Flush();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return true;
        }

  9.更新或新增[connectionStrings]節(jié)點(diǎn)的子節(jié)點(diǎn)值,存在則更新子節(jié)點(diǎn),不存在則新增子節(jié)點(diǎn),返回成功與否布爾值:

        /// 
        /// 更新或新增[connectionStrings]節(jié)點(diǎn)的子節(jié)點(diǎn)值,存在則更新子節(jié)點(diǎn),不存在則新增子節(jié)點(diǎn),返回成功與否布爾值
        /// 
        /// 配置文件路徑
        /// 子節(jié)點(diǎn)name值
        /// 子節(jié)點(diǎn)connectionString值
        /// 子節(jié)點(diǎn)providerName值
        /// 返回成功與否布爾值
        public static bool UpdateOrCreateConnectionString(string filename, string name, string connectionString, string providerName)
        {
            if (string.IsNullOrEmpty(filename))
            {
                throw new ArgumentNullException(filename);
            }
            if (string.IsNullOrEmpty(connectionString))
            {
                throw new ArgumentNullException(connectionString);
            }
            if (string.IsNullOrEmpty(providerName))
            {
                throw new ArgumentNullException(providerName);
            }
            var doc = new XmlDocument();
            //加載配置文件
            doc.Load(filename);
            //得到[connectionStrings]節(jié)點(diǎn)
            var node = doc.SelectSingleNode("http://connectionStrings");
            try
            {
                //得到[connectionStrings]節(jié)點(diǎn)中關(guān)于Name的子節(jié)點(diǎn)
                if (node != null)
                {
                    XmlElement element = (XmlElement)node.SelectSingleNode("http://add[@name='" + name + "']");
                    if (element != null)
                    {
                        //存在則更新子節(jié)點(diǎn)
                        element.SetAttribute("connectionString", connectionString);
                        element.SetAttribute("providerName", providerName);
                    }
                    else
                    {
                        //不存在則新增子節(jié)點(diǎn)
                        var subElement = doc.CreateElement("add");
                        subElement.SetAttribute("name", name);
                        subElement.SetAttribute("connectionString", connectionString);
                        subElement.SetAttribute("providerName", providerName);
                        node.AppendChild(subElement);
                    }
                }
                //保存至配置文件(方式二)
                doc.Save(filename);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return true;
        }

  10.刪除[appSettings]節(jié)點(diǎn)中包含Key值的子節(jié)點(diǎn),返回成功與否布爾值:

        /// 
        /// 刪除[appSettings]節(jié)點(diǎn)中包含Key值的子節(jié)點(diǎn),返回成功與否布爾值
        /// 
        /// 配置文件路徑
        /// 要?jiǎng)h除的子節(jié)點(diǎn)Key值
        /// 返回成功與否布爾值
        public static bool DeleteByKey(string filename, string key)
        {
            if (string.IsNullOrEmpty(filename))
            {
                throw new ArgumentNullException(filename);
            }
            if (string.IsNullOrEmpty(key))
            {
                throw new ArgumentNullException(key);
            }
            var doc = new XmlDocument();
            //加載配置文件
            doc.Load(filename);
            //得到[appSettings]節(jié)點(diǎn)
            var node = doc.SelectSingleNode("http://appSettings");
            //得到[appSettings]節(jié)點(diǎn)中關(guān)于Key的子節(jié)點(diǎn)
            if (node != null)
            {
                var element = (XmlElement)node.SelectSingleNode("http://add[@key='" + key + "']");
                if (element != null)
                {
                    //存在則刪除子節(jié)點(diǎn)
                    if (element.ParentNode != null) element.ParentNode.RemoveChild(element);
                }
            }
            try
            {
                //保存至配置文件(方式一)
                using (var xmlwriter = new XmlTextWriter(filename, null))
                {
                    xmlwriter.Formatting = Formatting.Indented;
                    doc.WriteTo(xmlwriter);
                    xmlwriter.Flush();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return true;
        }

  11.刪除[connectionStrings]節(jié)點(diǎn)中包含name值的子節(jié)點(diǎn),返回成功與否布爾值:

        /// 
        /// 刪除[connectionStrings]節(jié)點(diǎn)中包含name值的子節(jié)點(diǎn),返回成功與否布爾值
        /// 
        /// 配置文件路徑
        /// 要?jiǎng)h除的子節(jié)點(diǎn)name值
        /// 返回成功與否布爾值
        public static bool DeleteByName(string filename, string name)
        {
            if (string.IsNullOrEmpty(filename))
            {
                throw new ArgumentNullException(filename);
            }
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException(name);
            }
            var doc = new XmlDocument();
            //加載配置文件
            doc.Load(filename);
            //得到[connectionStrings]節(jié)點(diǎn)
            var node = doc.SelectSingleNode("http://connectionStrings");
            //得到[connectionStrings]節(jié)點(diǎn)中關(guān)于Name的子節(jié)點(diǎn)
            if (node != null)
            {
                var element = (XmlElement)node.SelectSingleNode("http://add[@name='" + name + "']");
                if (element != null)
                {
                    //存在則刪除子節(jié)點(diǎn)
                    node.RemoveChild(element);
                }
            }
            try
            {
                //保存至配置文件(方式二)
                doc.Save(filename);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return true;
        }

  以上對(duì)System.Configuration類的幾種常用方法做了簡(jiǎn)單說明,也提供了幾種較為常用的操作方法,希望對(duì)在項(xiàng)目中需要使用到配置文件的開發(fā)人員有用。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


當(dāng)前文章:DotNet程序配置文件-創(chuàng)新互聯(lián)
文章分享:http://weahome.cn/article/djisgh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部