配置文件结构

时间:2017-11-12 13:36:35

标签: c# connection-string app-config

我与app.config文件混在一起。

我已配置failed以获取connectionStrings:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <configSections>
    <connectionStrings>
         <add name="MovieDBContext" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
         <add name="ProgrammingInCSharpConnection"  providerName="System.Data.SqlClient" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=ProgrammingInCSharp;" />
    </connectionStrings>
   </configSections>
</configuration>

<connectionStrings>放在<connectionStrings>之后解决问题:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <configSections />
   <connectionStrings>
       <add name="MovieDBContext" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
       <add name="ProgrammingInCSharpConnection"  providerName="System.Data.SqlClient" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=ProgrammingInCSharp;" />
   </connectionStrings>
</configuration>

但我发现许多样本的图案低于

<configSections>
    <connectionStrings>
       ...
    </connectionStrings>
</configSections>

在某些情况下可能有用吗? 一般来说配置文件的逻辑是什么,每个部分可能包含哪种信息?

2 个答案:

答案 0 :(得分:0)

configSections节点包含配置部分每个命名空间声明,但通常不用于连接字符串,除非它们是特定于命名空间的。

  

但我发现许多样本的图案低于

您找到的模式永远不会有效,因为<connectionStrings>不允许在<configSections>下直接嵌套 。 这可以通过在<section>本身下声明连接字符串变量,以及服务器代码是否通过特定命名空间来定位它们来实现。

一个例子:

<configuration>
   <configSections>
      <section name="section1" type="System.MyNameSpace" />
   </configSections>
   <section1 connString="...conn.." />
</configuration>

在上面的示例中,命名空间System.MyNameSpace现在将具有一个名为connString的变量(字段),因此它可以在后面的代码中将其作为目标。

总之,如果您的连接字符串不是每个命名空间,<connectionStrings>元素应该直接嵌套在<configuration>节点下,而不是其他地方。

答案 1 :(得分:0)

没有。您的app.config节点中无法拥有有效的connectionStrings文件并且configSections。{/ p>

根据MSDN,这是允许的元素列表:

  • section
  • sectionGroup
  • add
  • clear

connectionStrings不在列表中,我不希望应用程序在该位置找到连接字符串。