2 zhuanzhe117 zhuanzhe117 于 2014.12.19 11:02 提问

C#修改配置文件后读取

自己封装了一个向Web.config中添加数据库连接串的配置节点的方法,修改完配置文件后,有另一方法要读取刚刚修改的配置文件,总是读不到,提示未见对象引用到实例.

哪位高手指点一下?

9个回答

q107770540
q107770540   Ds   Rxr 2014.12.19 11:14

代码是怎么写的,具体错误堆栈帖一下

caozhy
caozhy   Ds   Rxr 2014.12.19 11:33

配置文件的路径是否正确。另外配置文件是实时从文件读取的么?

zhuanzhe117
zhuanzhe117 是要实时读取,但是没做到.所有的配置和路径之类的都没错,也尝试了刷新,依然不行.我想xml不支持热部署所以没办法做到吧.
大约 3 年之前 回复
save4me
save4me   Ds   Rxr 2014.12.19 11:27

请检查一下你新的数据库连接配置的用户名,密码等正确,否则连接失败,就会出现你说的错误。

feiyun0112
feiyun0112   Rxr 2014.12.19 12:14

你的代码?

先看看web.config是不是确实被改了

试试刷新最新的配置内容
ConfigurationManager.RefreshSection("appSettings");

zhuanzhe117
zhuanzhe117   2014.12.19 20:22

我要实现的功能是动态创建数据库,每创建一个新库要在配置文件中添加一条链接字符串(key 和 value).然后再实时地去读取这个连接字符串.但xml不支持热部署,所以就换了思路,不在配置文件中写了.

ZR__MaNong
ZR__MaNong   2014.12.19 23:52

首先 你要确定是不是确实读到了配置文件
其次 你查看一下配置文件的节点修改是不是修改了节点的属性值

starfd
starfd   Rxr 2014.12.21 23:52

appsettings和dataconnections都支持将配置节内容写到独立的config中,这时候修改相应的config并不会导致相应配置立即生效,所以你需要通过代码重新刷新一下相关配置节
就如上面说的:ConfigurationManager.RefreshSection("appSettings");//其它配置节

caozhy
caozhy   Ds   Rxr 2015.01.03 07:42

你修改了web.config,部署上去,那么iis就会立刻生效的。

han_yankun2009
han_yankun2009   2015.01.05 00:48

//线程安全
lock ("ConfigHelper")
{
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");

            ConnectionStringSettings connectionStringSettings = new ConnectionStringSettings();
            connectionStringSettings.Name = strDataBaseName;
            connectionStringSettings.ConnectionString = "metadata=res://*/" + strEFModelName + ".csdl|res://*/" + strEFModelName + ".ssdl|res://*/" + strEFModelName + ".msl;provider=System.Data.SqlClient;provider connection string=\"data source=" + strSqlServerIp + ";initial catalog=" + strDataBaseName + ";persist security info=True;user id=" + strUserName + ";password=" + strPassword + ";MultipleActiveResultSets=True;App=EntityFramework\"";
            connectionStringSettings.ProviderName = "System.Data.EntityClient";

            config.ConnectionStrings.ConnectionStrings.Add(connectionStringSettings);


            KeyValueConfigurationElement keyValueConfigurationElement = new KeyValueConfigurationElement(strDataBaseName, "Data Source=" + strSqlServerIp + ";initial catalog=" + strDataBaseName + ";user id=" + strUserName + ";password=" + strPassword + ";connect Timeout=20;");

            config.AppSettings.Settings.Add(keyValueConfigurationElement);
            config.Save();
            ConfigurationManager.RefreshSection("appSettings");
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!