自己封装了一个向Web.config中添加数据库连接串的配置节点的方法,修改完配置文件后,有另一方法要读取刚刚修改的配置文件,总是读不到,提示未见对象引用到实例.
哪位高手指点一下?
代码是怎么写的,具体错误堆栈帖一下
请检查一下你新的数据库连接配置的用户名,密码等正确,否则连接失败,就会出现你说的错误。
配置文件的路径是否正确。另外配置文件是实时从文件读取的么?
你的代码?
先看看web.config是不是确实被改了
试试刷新最新的配置内容
ConfigurationManager.RefreshSection("appSettings");
我要实现的功能是动态创建数据库,每创建一个新库要在配置文件中添加一条链接字符串(key 和 value).然后再实时地去读取这个连接字符串.但xml不支持热部署,所以就换了思路,不在配置文件中写了.
首先 你要确定是不是确实读到了配置文件
其次 你查看一下配置文件的节点修改是不是修改了节点的属性值
appsettings和dataconnections都支持将配置节内容写到独立的config中,这时候修改相应的config并不会导致相应配置立即生效,所以你需要通过代码重新刷新一下相关配置节
就如上面说的:ConfigurationManager.RefreshSection("appSettings");//其它配置节
你修改了web.config,部署上去,那么iis就会立刻生效的。
//线程安全
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");