asp.net 讀取并修改config文件實(shí)現(xiàn)代碼
右擊項(xiàng)目名稱,選擇“添加”→“添加新建項(xiàng)”,在出現(xiàn)的“添加新項(xiàng)”對(duì)話框中,選擇“添加應(yīng)用程序配置文件”;如果項(xiàng)目以前沒(méi)有配置文件,則默認(rèn)的文件名稱為“app.config”,單擊“確定”。出現(xiàn)在設(shè)計(jì)器視圖中的app.config文件為:
<?xmlversion="1.0"encoding="utf-8" ?>
<configuration>
</configuration>
在項(xiàng)目進(jìn)行編譯后,在bin\Debuge文件下,將出現(xiàn)兩個(gè)配置文件(以本項(xiàng)目為例),一個(gè)名為“JxcManagement.EXE.config”,另一個(gè)名為“JxcManagement.vshost.exe.config”。第一個(gè)文件為項(xiàng)目實(shí)際使用的配置文件,在程序運(yùn)行中所做的更改都將被保存于此;第二個(gè)文件為原代碼“app.config”的同步文件,在程序運(yùn)行中不會(huì)發(fā)生更改。
2. connectionStrings配置節(jié):
請(qǐng)注意:如果您的SQL版本為2005 Express版,則默認(rèn)安裝時(shí)SQL服務(wù)器實(shí)例名為localhost\SQLExpress,須更改以下實(shí)例中“Data Source=localhost;”一句為“Data Source=localhost\SQLExpress;”,在等于號(hào)的兩邊不要加上空格。
<!--數(shù)據(jù)庫(kù)連接串-->
<connectionStrings>
<clear />
<addname="conJxcBook"
connectionString="Data Source=localhost;Initial Catalog=jxcbook;User ID=sa;password=********"
providerName="System.Data.SqlClient" />
</connectionStrings>
3. appSettings配置節(jié):
appSettings配置節(jié)為整個(gè)程序的配置,如果是對(duì)當(dāng)前用戶的配置,請(qǐng)使用userSettings配置節(jié),其格式與以下配置書(shū)寫(xiě)要求一樣。
<!--進(jìn)銷存管理系統(tǒng)初始化需要的參數(shù)-->
<appSettings>
<clear />
<addkey="userName"value="" />
<addkey="password"value="" />
<addkey="Department"value="" />
<addkey="returnValue"value="" />
<addkey="pwdPattern"value="" />
<addkey="userPattern"value="" />
</appSettings>
4.讀取與更新app.config
對(duì)于app.config文件的讀寫(xiě),參照了網(wǎng)絡(luò)文章:http://www.codeproject.com/csharp/ SystemConfiguration.asp標(biāo)題為“Read/Write App.Config File with .NET 2.0”一文。
請(qǐng)注意:要使用以下的代碼訪問(wèn)app.config文件,除添加引用System.Configuration外,還必須在項(xiàng)目添加對(duì)System.Configuration.dll的引用。
4.1 讀取connectionStrings配置節(jié)
///<summary>
///依據(jù)連接串名字connectionName返回?cái)?shù)據(jù)連接字符串
///</summary>
///<param name="connectionName"></param>
///<returns></returns>
private static string GetConnectionStringsConfig(string connectionName)
{
string connectionString =
ConfigurationManager.ConnectionStrings[connectionName].ConnectionString.ToString();
Console.WriteLine(connectionString);
return connectionString;
}
4.2 更新connectionStrings配置節(jié)
///<summary>
///更新連接字符串
///</summary>
///<param name="newName">連接字符串名稱</param>
///<param name="newConString">連接字符串內(nèi)容</param>
///<param name="newProviderName">數(shù)據(jù)提供程序名稱</param>
private static void UpdateConnectionStringsConfig(string newName,
string newConString,
string newProviderName)
{
bool isModified = false; //記錄該連接串是否已經(jīng)存在
//如果要更改的連接串已經(jīng)存在
if (ConfigurationManager.ConnectionStrings[newName] != null)
{
isModified = true;
}
//新建一個(gè)連接字符串實(shí)例
ConnectionStringSettings mySettings =
new ConnectionStringSettings(newName, newConString, newProviderName);
// 打開(kāi)可執(zhí)行的配置文件*.exe.config
Configuration config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// 如果連接串已存在,首先刪除它
if (isModified)
{
config.ConnectionStrings.ConnectionStrings.Remove(newName);
}
// 將新的連接串添加到配置文件中.
config.ConnectionStrings.ConnectionStrings.Add(mySettings);
// 保存對(duì)配置文件所作的更改
config.Save(ConfigurationSaveMode.Modified);
// 強(qiáng)制重新載入配置文件的ConnectionStrings配置節(jié)
ConfigurationManager.RefreshSection("ConnectionStrings");
}
4.3 讀取appStrings配置節(jié)
///<summary>
///返回*.exe.config文件中appSettings配置節(jié)的value項(xiàng)
///</summary>
///<param name="strKey"></param>
///<returns></returns>
private static string GetAppConfig(string strKey)
{
foreach (string key in ConfigurationManager.AppSettings)
{
if (key == strKey)
{
return ConfigurationManager.AppSettings[strKey];
}
}
return null;
}
4.4 更新connectionStrings配置節(jié)
///<summary>
///在*.exe.config文件中appSettings配置節(jié)增加一對(duì)鍵、值對(duì)
///</summary>
///<param name="newKey"></param>
///<param name="newValue"></param>
private static void UpdateAppConfig(string newKey, string newValue)
{
bool isModified = false;
foreach (string key in ConfigurationManager.AppSettings)
{
if(key==newKey)
{
isModified = true;
}
}
// Open App.Config of executable
Configuration config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// You need to remove the old settings object before you can replace it
if (isModified)
{
config.AppSettings.Settings.Remove(newKey);
}
// Add an Application Setting.
config.AppSettings.Settings.Add(newKey,newValue);
// Save the changes in App.config file.
config.Save(ConfigurationSaveMode.Modified);
// Force a reload of a changed section.
ConfigurationManager.RefreshSection("appSettings");
}
/// <summary>
/// 寫(xiě)入Key,Value 到XML文件
/// </summary>
/// <param name="Key"></param>
/// <param name="Value"></param>
public static void SaveConfig(string Key,string Value)
{
XmlDocument doc = new XmlDocument();
//獲得配置文件的全路徑
string strFileName = AppDomain.CurrentDomain.BaseDirectory.ToString() + "App.config";
doc.Load(strFileName);
//找出名稱為“add”的所有元素
XmlNodeList nodes = doc.GetElementsByTagName("add");
for (int i = 0; i < nodes.Count; i++)
{
//獲得將當(dāng)前元素的key屬性
XmlAttribute att = nodes[i].Attributes["key"];
//根據(jù)元素的第一個(gè)屬性來(lái)判斷當(dāng)前的元素是不是目標(biāo)元素
if (att.Value == Key)
{
//對(duì)目標(biāo)元素中的第二個(gè)屬性賦值
att = nodes[i].Attributes["value"];
att.Value = Value;
break;
}
}
//保存上面的修改
doc.Save(strFileName);
}
相關(guān)文章
Asp.Net中的Action和Func委托實(shí)現(xiàn)
這篇文章主要介紹了Asp.Net中的Action和Func委托的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12.net中 發(fā)送郵件內(nèi)容嵌入圖片的具體實(shí)例
這篇文章主要介紹了.net中 發(fā)送郵件內(nèi)容嵌入圖片的具體實(shí)例,需要的朋友可以參考下2014-02-02EF?Core項(xiàng)目中不同數(shù)據(jù)庫(kù)需要的安裝包介紹
這篇文章介紹了EF?Core項(xiàng)目中不同數(shù)據(jù)庫(kù)需要的安裝包,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05深入Lumisoft.NET組件與.NET API實(shí)現(xiàn)郵件發(fā)送功能的對(duì)比分析
本篇文章對(duì)Lumisoft.NET組件與.NET API實(shí)現(xiàn)郵件發(fā)送的功能兩者進(jìn)行了深入的對(duì)比分析。需要的朋友參考下2013-05-05.Net Core中自定義認(rèn)證實(shí)現(xiàn)
本文主要介紹了.Net Core中自定義認(rèn)證實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01關(guān)于Metalama使用Fabric操作項(xiàng)目或命名空間的問(wèn)題
Metalama是一個(gè)基于微軟編譯器Roslyn的元編程的庫(kù),可以解決我在開(kāi)發(fā)中遇到的重復(fù)代碼的問(wèn)題,這篇文章主要介紹了Metalama使用Fabric操作項(xiàng)目或命名空間,需要的朋友可以參考下2022-04-04詳解在DevExpress程序中使用TreeList控件以及節(jié)點(diǎn)查詢的處理
本篇文章主要介紹基于DevExpress的TreeList控件使用以及使用SearchControl對(duì)節(jié)點(diǎn)進(jìn)行查詢的操作,具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2016-12-12微信公眾平臺(tái)開(kāi)發(fā)之地理位置.Net代碼解析
這篇文章主要為大家詳細(xì)解析了微信公眾平臺(tái)開(kāi)發(fā)之地理位置.Net代碼,感興趣的小伙伴們可以參考一下2016-06-06C#圖片截取壓縮(百分比壓縮/大小壓縮)實(shí)現(xiàn)代碼
為了娛樂(lè)寫(xiě)了個(gè)截取圖片和壓縮圖片你的小工具:按照百分比壓縮/制定大小壓縮等等,感興趣的朋友可以了解下啊,希望本文對(duì)你學(xué)些c#圖片知識(shí)有所幫助2013-01-01