问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c#读取Config文件的问题

发布网友 发布时间:2023-06-23 07:30

我来回答

2个回答

热心网友 时间:2024-06-01 20:46

应用程序配置文件(App.config)是标准的 XML 文件,XML 标记和属性是区分大小写的。它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序。
对于一个config文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="ServerIP" value="127.0.0.1"></add>
<add key="DataBase" value="WarehouseDB"></add>
<add key="user" value="sa"></add>
<add key="password" value="sa"></add>
</appSettings>
</configuration>

对config配置文件的读写类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Configuration;
using System.ServiceModel;
using System.ServiceModel.Configuration;

namespace NetUtilityLib
{
public static class ConfigHelper
{
//依据连接串名字connectionName返回数据连接字符串
public static string GetConnectionStringsConfig(string connectionName)
{
//指定config文件读取
string file = System.Windows.Forms.Application.ExecutablePath;
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(file);
string connectionString =
config.ConnectionStrings.ConnectionStrings[connectionName].ConnectionString.ToString();
return connectionString;
}

///<summary>
///更新连接字符串
///</summary>
///<param name="newName">连接字符串名称</param>
///<param name="newConString">连接字符串内容</param>
///<param name="newProviderName">数据提供程序名称</param>
public static void UpdateConnectionStringsConfig(string newName, string newConString, string newProviderName)
{
//指定config文件读取
string file = System.Windows.Forms.Application.ExecutablePath;
Configuration config = ConfigurationManager.OpenExeConfiguration(file);

bool exist = false; //记录该连接串是否已经存在
//如果要更改的连接串已经存在
if (config.ConnectionStrings.ConnectionStrings[newName] != null)
{
exist = true;
}
// 如果连接串已存在,首先删除它
if (exist)
{
config.ConnectionStrings.ConnectionStrings.Remove(newName);
}
//新建一个连接字符串实例
ConnectionStringSettings mySettings =
new ConnectionStringSettings(newName, newConString, newProviderName);
// 将新的连接串添加到配置文件中.
config.ConnectionStrings.ConnectionStrings.Add(mySettings);
// 保存对配置文件所作的更改
config.Save(ConfigurationSaveMode.Modified);
// 强制重新载入配置文件的ConnectionStrings配置节
ConfigurationManager.RefreshSection("ConnectionStrings");
}

///<summary>
///返回*.exe.config文件中appSettings配置节的value项
///</summary>
///<param name="strKey"></param>
///<returns></returns>
public static string GetAppConfig(string strKey)
{
string file = System.Windows.Forms.Application.ExecutablePath;
Configuration config = ConfigurationManager.OpenExeConfiguration(file);
foreach (string key in config.AppSettings.Settings.AllKeys)
{
if (key == strKey)
{
return config.AppSettings.Settings[strKey].Value.ToString();
}
}
return null;
}

///<summary>
///在*.exe.config文件中appSettings配置节增加一对键值对
///</summary>
///<param name="newKey"></param>
///<param name="newValue"></param>
public static void UpdateAppConfig(string newKey, string newValue)
{
string file = System.Windows.Forms.Application.ExecutablePath;
Configuration config = ConfigurationManager.OpenExeConfiguration(file);
bool exist = false;
foreach (string key in config.AppSettings.Settings.AllKeys)
{
if (key == newKey)
{
exist = true;
}
}
if (exist)
{
config.AppSettings.Settings.Remove(newKey);
}
config.AppSettings.Settings.Add(newKey, newValue);
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}

// 修改system.serviceModel下所有服务终结点的IP地址
public static void UpdateServiceModelConfig(string configPath, string serverIP)
{
Configuration config = ConfigurationManager.OpenExeConfiguration(configPath);
ConfigurationSectionGroup sec = config.SectionGroups["system.serviceModel"];
ServiceModelSectionGroup serviceModelSectionGroup = sec as ServiceModelSectionGroup;
ClientSection clientSection = serviceModelSectionGroup.Client;
foreach (ChannelEndpointElement item in clientSection.Endpoints)
{
string pattern = @"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b";
string address = item.Address.ToString();
string replacement = string.Format("{0}", serverIP);
address = Regex.Replace(address, pattern, replacement);
item.Address = new Uri(address);
}

config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("system.serviceModel");
}

// 修改applicationSettings中App.Properties.Settings中服务的IP地址
public static void UpdateConfig(string configPath, string serverIP)
{
Configuration config = ConfigurationManager.OpenExeConfiguration(configPath);
ConfigurationSectionGroup sec = config.SectionGroups["applicationSettings"];
ConfigurationSection configSection = sec.Sections["DataService.Properties.Settings"];
ClientSettingsSection clientSettingsSection = configSection as ClientSettingsSection;
if (clientSettingsSection != null)
{
SettingElement element1 = clientSettingsSection.Settings.Get("DataService_SystemManagerWS_SystemManagerWS");
if (element1 != null)
{
clientSettingsSection.Settings.Remove(element1);
string oldValue = element1.Value.ValueXml.InnerXml;
element1.Value.ValueXml.InnerXml = GetNewIP(oldValue, serverIP);
clientSettingsSection.Settings.Add(element1);
}

SettingElement element2 = clientSettingsSection.Settings.Get("DataService_EquipManagerWS_EquipManagerWS");
if (element2 != null)
{
clientSettingsSection.Settings.Remove(element2);
string oldValue = element2.Value.ValueXml.InnerXml;
element2.Value.ValueXml.InnerXml = GetNewIP(oldValue, serverIP);
clientSettingsSection.Settings.Add(element2);
}
}
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("applicationSettings");
}

private static string GetNewIP(string oldValue, string serverIP)
{
string pattern = @"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b";
string replacement = string.Format("{0}", serverIP);
string newvalue = Regex.Replace(oldValue, pattern, replacement);
return newvalue;
}
}
}

测试代码如下:

class Program
{
static void Main(string[] args)
{
try
{
//string file = System.Windows.Forms.Application.ExecutablePath + ".config";
//string file1 = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
string serverIP = ConfigHelper.GetAppConfig("ServerIP");
string db = ConfigHelper.GetAppConfig("DataBase");
string user = ConfigHelper.GetAppConfig("user");
string password = ConfigHelper.GetAppConfig("password");

Console.WriteLine(serverIP);
Console.WriteLine(db);
Console.WriteLine(user);
Console.WriteLine(password);

ConfigHelper.UpdateAppConfig("ServerIP", "192.168.1.11");
string newIP = ConfigHelper.GetAppConfig("ServerIP");
Console.WriteLine(newIP);

Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}

热心网友 时间:2024-06-01 20:46

这错误要么就是你的sql配置文件路径不对,要么就是配置文件内部格式不正确。
你只贴出了堆栈,没有贴出错误信息,看不出是什么错误。
ibatis是开源的,可以下载源代码加入工程,一起调试,就知道哪错了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我是男生,18岁,两夹有红血丝, 鼻子有黑头,脸部还有疙瘩,我要用什么洁... 18岁.油性皮肤. 男士。 有什么洗面奶能有效去油顺便去黑头暗疮之类的... 我今年18岁是油性皮肤,尤其是鼻子和鼻子旁边的脸狭很容易出油。最近用... 祛痘后留下黑色痘印应该怎么消除? 2xl是多大尺码180还是175 2xl是175吗 年轻人最核心的能力是什么? 年轻的时候蕞核心的能力是什么? 人在年轻的时候蕞核心的能力是什么 尿酸高代表什么 德龙x3000门皮咋样拆 各位卡友好德龙x3000档把怎样拆卸 德龙x3000费油怎么解决? 德龙x3000空滤怎么安装 潜水电泵绕组用油浸和水浸的绕组线有什么不一样 单相潜水泵主绕组第二把还比第一把多一圈呢? 奥迪a6进气系统包括哪些部分 06年奥迪a6拆进气歧管要拆喷油嘴吗 侧潜水泵组直多大能用 19年奥迪a6进气岐管真空管在哪 防冻液行派和驾驰那个质量好 驾驰防冻液好吗 胜牌防冻液和驾驰哪个好 驾驰防冻液和博世哪个好 怎样可以添加陌生人 汽车防冻液可以长期不更换吗 如何看到微信群里陌生人的呢? 防冻液可以一直不换吗 如何看到微信群里陌生人的呢? ExsG是什么名牌的缩写? C#的Winform使用AppConfig配置文件怎么不行 delphi loadfromfile语句读取次级文件夹 大年初一拜年文案创意2023年集合(75条) 正月初一最适合发朋友圈的文案 侵华日军南京大屠杀遇难同胞纪念馆可以参观当天预约吗 南京一日游必看景点南京推荐景点 南京红色旅游景点及其介绍 南京红色旅游景点及其介绍作文 玥妍肌洋甘菊爽肤水怎么样 FC16HR-Q8+火花塞在哪里看出来热值呢? 宠物店生意不好要不要降价?求告知 《市场营销学》:你认为降价行为对消费者、生产企业是利大还是弊大? 急... 生意不好的时候到底应不应该降价呢? ...有许多顾客都跑掉了,现在生意不好,我该降价吗?有比我便宜也有... 宠物店生意不好要不要降价? 商场“坐地降价”好不好?? 讲价还是不降价?(开店铺) 宝马X3火花塞怎么拆卸 奥迪q2用什么牌子防冻液 宝马x3换4个新的火花塞需要几分钟能换完? 奥迪A4L原厂防冻液是那个牌子