[英]Configuration System Failed to Initialize
我目前正在創建一個登錄表單並擁有以下代碼:
string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
try
{
using (OdbcConnection connect = new OdbcConnection(connectionString))
{
connect.Open();
OdbcCommand cmd = new OdbcCommand("SELECT username, password FROM receptionist", connect);
OdbcDataReader reader = cmd.ExecuteReader();
if (username_login.Text == username && password_login.Text == password)
{
this.Hide();
MessageBox.Show("Invalid User", "Login Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.Close();
}
else
MessageBox.Show("Invalid User", "Login Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
connect.Close();
}
}
catch (OdbcException ex)
{
MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
但是每當我嘗試輸入用戶名和密碼時,都會出現一個名為“配置系統初始化失敗”的錯誤。 這是什么問題,我該如何解決?
確保您的項目中的配置文件(web.config 如果是 web,或者 app.config 如果是 windows)啟動為:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings"
type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="YourProjectName.Properties.Settings"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission="false" />
</sectionGroup>
</configSections>
</configuration>
請注意,在configuration
元素中,第一個子元素必須是configSections
元素。
在section
元素的name
屬性中,確保將YourProjectName
替換為實際項目的名稱。
我碰巧在一個類庫項目中創建了一個 web 服務,然后我將配置文件(為了帶來端點配置)復制(覆蓋)到我的 Windows 應用程序,我開始遇到同樣的問題。 我無意中刪除了configSections
。
它對我有用,希望它有幫助
從c:\\Users\\username\\AppData\\Local\\appname和c:\\Users\\username\\AppData\\Roaming\\appname 中刪除舊的配置文件,然后嘗試重新啟動您的應用程序。
有時發生錯誤是因為 Windows 在
C:\\Users\\App Data\\Local\\“您的應用程序名稱”...
只需刪除此文件夾即可完成。 嘗試一下。
如果您已將自己的自定義配置部分添加到App.Config
,請確保您已在<configSections>
元素中定義了該部分。 我添加了我的配置 XML 但忘記在頂部聲明配置部分 - 這導致了我的異常“配置系統無法初始化”。
我在使用 MSTest 類時遇到了同樣的問題: Marlon Grech 在他的文章中說“必須將元素定義為 App.config 中的第一個元素”。
所以確保這是元素下的第一個元素。 我把 AppSettings 放在第一位。
我知道這已經得到了回答,但我在單元測試中遇到了完全相同的問題。 我正在撕我的頭發 - 添加一個 appSettings 部分,然后根據答案聲明配置部分。 最后發現我已經在我的配置文件中進一步聲明了一個 appSettings 部分。 兩個部分都指向我的外部設置文件“appSettings.config”,但第一個 appSettings 元素使用屬性文件,而另一個使用屬性configSource 。 我知道問題是關於 connectionStrings 的。 果然,如果 appSettings 元素是使用不同屬性復制的 connectionStrings 元素,就會發生這種情況。
希望這可以在其他人走上我所做的導致浪費一兩個小時的道路之前為他們提供解決方案。 感嘆哦我們開發人員的生活。 有時,我們浪費在調試上的時間比開發上花費的時間還多!
如果您有用戶范圍的設置,您也可能在[Userfolder]\\AppData\\Local\\[ProjectName]
文件夾中的某處有一個 user.config 文件。
如果您稍后刪除用戶范圍設置,則不會自動刪除 user.config,並且它的存在可能會導致相同的錯誤消息。 刪除文件夾對我有用。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="xyz" value="123" />
</appSettings>
</configuration>
卸載 Oracle 客戶端驅動程序后我開始遇到這個問題,它刪除了我的C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\machine.config !
從另一台計算機復制它解決了這個問題。
經過長時間的搜索我意識到,這個異常有一個內部異常,它告訴你你的配置文件到底有什么問題
哇,我花了很長時間才弄明白這個。 出於某種原因,改變屬性[assembly: AssemblyCompany("CompanyName")]
在AssemblyInfo.cs
由這個錯誤消失。 我正在引用一個具有不同屬性值的項目[assembly: AssemblyCompany("CompanyName")]
。 我確保兩個項目具有相同的屬性值並且效果很好!
同樣的問題我通過從 App.config 中刪除 verion="v3.5" 解決了我的問題。
前
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
</startup>
<supportedRuntime version="v3.5" />//Remove this
</configuration>
解決方案
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
</startup>
</configuration>
這是使用版本的方法
我通過使用下面的代碼解決了這個問題
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings"
type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="YourProjectName.Properties.Settings"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission="false" />
</sectionGroup>
</configSections>
<appSettings>
<add key="SPUserName" value="TestUser" />
<add key="SPPassword" value="UserPWD" />
</appSettings>
</configuration>
.Net Core WinForms / WPF / .Net Standard Class Library 項目的簡單解決方案
第 1 步:通過 Nuget Manager 安裝System.Configuration.ConfigurationManager
第 2 步:添加一個新的App.Config
文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Bodrum" value="Yalikavak" />
</appSettings>
</configuration>
step3:獲取值
string value = ConfigurationManager.AppSettings.Get("Bodrum");
// value is Yalikavak
如果您是從Class Library
調用它,則在您的主項目中添加App.Config
文件。
在我的情況下,唯一的解決方案是在我的測試項目中添加對System.Configuration
的引用。
值得注意的是,如果您將連接字符串之類的內容添加到 app.config 中,如果您在定義的配置部分之外添加項目,它不會立即抱怨,但是當您嘗試訪問它時,您可能會得到上述錯誤。
折疊所有主要部分並確保在定義的部分之外沒有任何項目。 很明顯,當你真正發現它時。
這有點愚蠢,但對我來說,我通過在我的代碼上從源代碼管理中獲取最新信息來修復它。 我認為有一些新的配置元素是由其他人添加的,我需要覆蓋我的配置文件。 OP 顯示了我得到的錯誤,這並沒有真正為我指明正確的方向。
我也遇到了同樣的問題,但不小心我寫的沒有寫,前一個應該在這個標簽里面。 因此出現“配置系統無法初始化”錯誤。 希望它會有所幫助
就我而言,我在 app.config 文件中有兩個配置部分。 刪除隱藏在代碼行中的那個后,該應用程序運行良好。
因此,對於有相同問題的人,請先檢查您是否有重復的 configsections。
如果您正在處理 Azure WebJob - 在升級到最新的 4.6.1 后,我必須刪除以下內容。
<compilation debug="true" targetFramework="4.6.1">
<assemblies>
<add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</assemblies>
</compilation>
希望這可以幫助。
就我而言,在我的 .edmx 文件中,我運行了“從數據庫更新模型”命令。 此命令向我的 app.config 文件添加了一個不必要的連接字符串。 我刪除了那個連接字符串,一切又好了。
如果其中有一些“特殊”字符,請嘗試將 .config 文件保存為 utf-8。 這就是我的控制台應用程序的問題。
我剛剛有了這個,這是因為我有一個<configuration>
元素嵌套在<configuration>
元素中。
我重新啟動了 Visual Studio 甚至整個 PC。 我清理了項目,重建並刪除了 bin 文件。
在我將配置從 x64 更改為 x86 之前,沒有任何幫助。 它在 x86 上工作,但當我把它改回來時,它也工作了!
如果您有自定義部分,則需要在配置標簽正下方的 configSections 下提及該部分。
請檢查您的轉換文件,確保您刪除了不必要的標簽。只有將要變化的部分才需要出現在轉換文件中。 如果不需要,請不要在轉換文件中提及配置部分。 這也會導致問題。
如果您在 machine.config 中有任何語法錯誤,那么也會出現此錯誤。
我也得到
'System.Configuration.ConfigurationErrorsException' in System.Configuration.dll
如果你有 windows,請檢查斜杠/
我正在處理一個在 linux 工作的人的項目,所以他把它們倒過來了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.