2011-06-16 97 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> 

內後確保項目的目標框架屬性不是客戶端配置文件

相關問題