2009-12-08 93 views
0

有点尴尬问,但因为我从来没有这样做,在这里。我有一个配置文件,它具有以这种格式存储的应用程序的连接字符串。阅读配置文件没有配置部分

<connectionStrings> 
    <clear /> 
    <add name="MyConnectionStringName" connectionString="{here is a connection string}"/> 
</connectionStrings> 

我试过配置管理器,但它要求该文件具有“配置”根元素。配置名称空间中是否还有别的东西,还是应该使用LinqToXml?

更新:我无法更改文件中的任何内容,文件已由本地框架中的某些使用多年。上面显示了文件中的所有内容。

UPDATE2:二看就会发现该文件从App.Config中引用为

<connectionStrings configSource="Config\connectionstrings.config"/> 

,让我用ConfigurationManager.ConnectionStrings。

回答

0

什么是错在

<Configuration> 
    <appSettings> 
    <add key="MyConnectionStringName" value="{here is a connection string}"/> 
    </appSettings> 
</Configuration> 
+0

这是一个旧的应用程序,它有一些蹩脚的框架构建它,我无法改变它。 – epitka 2009-12-08 17:21:50

1

还有更多的不仅仅是connectionStrings节的配置文件。如果您使用Visual Studio,修复问题的简单方法是使用IDE添加新的应用程序配置文件。 IDE将为您创建一个shell文件,然后您可以将connectionStrings部分添加到(在配置部分中)。

通过手,在最低限度,你需要这样的:

<?xml version="1.0"?> 
<configuration> 
    <connectionStrings> 
     <clear /> 
     <add name="MyConnectionStringName" connectionString="{connection string}"/> 
    </connectionStrings> 
</configuration> 
0

那么你可以将其加载到一个XmlDocument和Load方法。

一旦你装载了它,你可以使用SelectNodes和xpath查询来找回你想要的节点。

关我的头的东西顶像

string conn; 
XmlDocument xdoc = new XmlDocument(); 
xdoc.Load("path_to_file"); 
var configs = xdoc.SelectNodes("ConnectionStrings/Add"); 
foreach(XmlNode n in configs) 
{ 
    conn = n.Attributes["connectionString"]; 
} 

试一下看看。你可能需要玩一下xpath,自从我写了一段之后,已经有一段时间了。