2011-06-16 94 views
9

在我的应用程序,当我尝试通过使用此代码来获取连接字符串:配置系统初始化失败

System.Configuration.ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString; 

它抛出一个异常“配置系统初始化失败”。 app.config的格式错在哪里?

<?xml version="1.0"?> 
    <configuration> 


     <connectionStrings> 
     <add name="ConStr" connectionString="Integrated Security=false;Persist Security Info=False;User ID=funny;password=veryfunny;Initial Catalog=vegimanager;Data Source=.\sqlexpress;"/> 
     </connectionStrings> 



     <configSections> 
     <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
      <section name="Vegi_Manager.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/> 
     </sectionGroup> 
     </configSections> 




     <userSettings> 
     <Vegi_Manager.Properties.Settings> 
      <setting name="FIRMNAME" serializeAs="String"> 
      <value/> 
      </setting> 
      <setting name="FIRMADDRESS" serializeAs="String"> 
      <value/> 
      </setting> 
      <setting name="FIRMCITY" serializeAs="String"> 
      <value/> 
      </setting> 
      <setting name="FIRMSTATE" serializeAs="String"> 
      <value/> 
      </setting> 
      <setting name="FIRMPHONE" serializeAs="String"> 
      <value/> 
      </setting> 
      <setting name="FIRMMOBILE" serializeAs="String"> 
      <value/> 
      </setting> 
      <setting name="FIRMEMAIL" serializeAs="String"> 
      <value/> 
      </setting> 
      <setting name="FIRMTIN" serializeAs="String"> 
      <value/> 
      </setting> 
      <setting name="FIRMPAN" serializeAs="String"> 
      <value/> 
      </setting> 
      <setting name="FIRMMANDITAXNO" serializeAs="String"> 
      <value/> 
      </setting> 
      <setting name="INITIALFONFIGDONE" serializeAs="String"> 
      <value>False</value> 
      </setting> 
      <setting name="FIRMJURISDICTION" serializeAs="String"> 
      <value/> 
      </setting> 
      <setting name="FIRMBANKDETAILS" serializeAs="String"> 
      <value/> 
      </setting> 
      <setting name="FIRMDETAILS" serializeAs="String"> 
      <value/> 
      </setting> 
      <setting name="BILLFORMATNO" serializeAs="String"> 
      <value>0</value> 
      </setting> 
      <setting name="PRINTERNAME" serializeAs="String"> 
      <value/> 
      </setting> 
     </Vegi_Manager.Properties.Settings> 
     </userSettings> 



     <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
     </startup> 
    </configuration> 
+0

您的示例缺少打开的“”标记,但也许它只是没有复制过? – 2011-06-16 04:47:53

+0

是的,它只是没有被复制。 – 2011-06-16 05:29:28

回答

24

尝试把configSections作为configuration的第一个子元素,因为configSections应配置的第一要素

那么你的配置文件将是这样的:

<configuration> 

    <configSections> 
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
     <section name="Vegi_Manager.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/> 
    </sectionGroup> 
    </configSections> 

    <connectionStrings> 
    <add name="ConStr" connectionString="Integrated Security=false;Persist Security Info=False;User ID=funny;password=veryfunny;Initial Catalog=vegimanager;Data Source=.\sqlexpress;"/> 
    </connectionStrings> 

    <userSettings> 
    <Vegi_Manager.Properties.Settings> 
     <setting name="FIRMNAME" serializeAs="String"> 
     <value/> 
     </setting> 
     <setting name="FIRMADDRESS" serializeAs="String"> 
     <value/> 
     </setting> 
     <setting name="FIRMCITY" serializeAs="String"> 
     <value/> 
     </setting> 
     <setting name="FIRMSTATE" serializeAs="String"> 
     <value/> 
     </setting> 
     <setting name="FIRMPHONE" serializeAs="String"> 
     <value/> 
     </setting> 
     <setting name="FIRMMOBILE" serializeAs="String"> 
     <value/> 
     </setting> 
     <setting name="FIRMEMAIL" serializeAs="String"> 
     <value/> 
     </setting> 
     <setting name="FIRMTIN" serializeAs="String"> 
     <value/> 
     </setting> 
     <setting name="FIRMPAN" serializeAs="String"> 
     <value/> 
     </setting> 
     <setting name="FIRMMANDITAXNO" serializeAs="String"> 
     <value/> 
     </setting> 
     <setting name="INITIALFONFIGDONE" serializeAs="String"> 
     <value>False</value> 
     </setting> 
     <setting name="FIRMJURISDICTION" serializeAs="String"> 
     <value/> 
     </setting> 
     <setting name="FIRMBANKDETAILS" serializeAs="String"> 
     <value/> 
     </setting> 
     <setting name="FIRMDETAILS" serializeAs="String"> 
     <value/> 
     </setting> 
     <setting name="BILLFORMATNO" serializeAs="String"> 
     <value>0</value> 
     </setting> 
     <setting name="PRINTERNAME" serializeAs="String"> 
     <value/> 
     </setting> 
    </Vegi_Manager.Properties.Settings> 
    </userSettings> 

    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
</configuration> 
+0

就像通过黄油的热刀工程! – 2011-06-16 05:26:17

+0

:)我很高兴我可以帮助.. – Sumit 2011-06-16 05:35:17

+0

2年后,您的解决方案仍然有效。谢谢! – andrewb 2013-08-29 04:23:13

1

这是有点迟,我知道但是当我删除这个:

<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" /> 
</startup> 

然后错误消失。

+1

必须将configSections作为第一个子节点“如果configSections元素位于配置文件中,则configSections元素必须是配置元素的第一个子元素。”如果你移动这个配置元素,它会起作用。 – Thomas 2017-02-07 11:43:36

0

这适用于我。 确保您的app.config或web.config中开始与<configSections>标签<configuration>标签如

<configSections> 
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true"/> 
    </configSections> 
    <connectionStrings> 
<add name="ConStr" connectionString="Integrated Security=false;Persist Security Info=False;User ID=funny;password=veryfunny;Initial Catalog=vegimanager;Data Source=.\sqlexpress;"/> 
     </connectionStrings> 
    <connectionStrings> 

内后确保项目的目标框架属性不是客户端配置文件

相关问题