ระบบการกำหนดค่าล้มเหลวในการเริ่มต้น


225

ฉันยังใหม่กับ Visual Studio ฉันกำลังสร้างแบบฟอร์มเข้าสู่ระบบ

ฉันมีรหัสนี้

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);
}

แต่เมื่อใดก็ตามที่ฉันพยายามที่จะพิมพ์ในชื่อผู้ใช้และรหัสผ่านที่มีข้อผิดพลาดที่เรียกว่าระบบการกำหนดค่าล้มเหลวในการเริ่มต้น ฉันแค่สงสัยว่านี่คือปัญหาอะไรและฉันจะแก้ปัญหานี้ได้อย่างไร

กรุณาช่วย.



2
อีกสถานการณ์หนึ่ง - หากคุณกำลังมองหา ConfigurationManager.Appsettings [""] ตรวจสอบให้แน่ใจว่า <appSettings> มีอยู่ในการกำหนดค่า มิฉะนั้นคุณจะได้รับข้อยกเว้นนี้
LCJ

1
สิ่งนี้สามารถเกิดขึ้นได้หากคุณมีสถานที่สำหรับการตั้งค่า 2 แห่ง
Lawrence Thurman

คำตอบ:


392

ตรวจสอบให้แน่ใจว่าไฟล์กำหนดค่าของคุณ (web.config หากเว็บหรือ 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องค์ประกอบ

ในnameคุณสมบัติของsectionองค์ประกอบตรวจสอบให้แน่ใจว่าคุณแทนที่YourProjectNameด้วยชื่อโครงการจริง

เกิดขึ้นกับฉันที่ฉันสร้างเว็บเซอร์ในโครงการห้องสมุดคลาสจากนั้นฉันก็คัดลอก (เขียนทับ) ไฟล์กำหนดค่า (เพื่อนำการกำหนดค่าจุดสิ้นสุด) ไปยังแอป windows ของฉันและฉันเริ่มมีปัญหาเดียวกัน ฉันลบโดยไม่ตั้งใจconfigSectionsฉันได้ลบออกโดยไม่ได้ตั้งใจ

มันใช้งานได้สำหรับฉันหวังว่าจะช่วยได้


79
"ในองค์ประกอบ 'การกำหนดค่า' เด็กคนแรกจะต้องเป็นองค์ประกอบ 'การตั้งค่า' '<< นี่คือจุดสำคัญสำหรับฉัน ขอบคุณ
demoncodemonkey

7
อีกสถานการณ์หนึ่ง - หากคุณกำลังมองหา ConfigurationManager.Appsettings [""] ตรวจสอบให้แน่ใจว่า <appSettings> มีอยู่ในการกำหนดค่า มิฉะนั้นคุณจะได้รับข้อยกเว้นนี้
LCJ

6
มันแก้ไขปัญหาของฉันที่configSectionsองค์ประกอบมีอยู่ แต่ตั้งอยู่ในส่วนหลังของ app.config ฉันไม่สามารถช่วยถามว่าทำไมข้อผิดพลาดนี้เกิดขึ้น ฉันคิดว่าองค์ประกอบ XML ไม่จำเป็นต้องสั่งซื้อ
แทซองชิน

3
สิ่งนี้ถูกต้อง configSections ควรเป็นโหนดย่อยแรกภายใต้องค์ประกอบการกำหนดค่า
Umang Desai

7
วิธีที่ Microsoft ใช้แอปนี้ตั้งค่าให้หน่วงเหนี่ยว !!! อย่างน้อยที่สุดพวกเขาสามารถทำได้คือโยนข้อความแสดงข้อผิดพลาดที่ดีกว่า!
codenamezero

105

ลบไฟล์การกำหนดค่าเก่าออกจากc: \ Users \ ชื่อผู้ใช้ \ AppData \ Local \ appnameและc: \ Users \ ชื่อผู้ใช้ \ AppData \ Roaming \ appnameแล้วลองรีสตาร์ทแอปพลิเคชันของคุณ


2
ขอบคุณที่ทำงาน แต่ฉันก็ยังไม่เข้าใจว่าปัญหาคืออะไร
ของเหลว

1
ภายใต้ไฟล์ user.config ของโฟลเดอร์ในเครื่องว่างเปล่า หลังจากการลบแอปโฟลเดอร์ในเครื่องเริ่มทำงาน
Ozgur

3
ขอบคุณมันใช้งานได้ แต่สิ่งที่อาจเป็นสาเหตุของข้อผิดพลาดนี้
vasuy19

1
ไฟล์ของฉันเต็มไปด้วยค่าต่ำ (0x00) ผมคัดลอกหนึ่งที่ทำงานในแล้วมันจะดี
DanW

1
ไฟล์กำหนดค่าของฉันในตำแหน่งนี้เสียหายระหว่างเกิดไฟดับ - ไฟล์กำหนดค่าซึ่งโดยปกติ XML จะเต็มไปด้วยไบต์ NUL
mroselli

19

บางครั้งข้อผิดพลาดเกิดขึ้นเนื่องจากหน้าต่างสร้างซ้ำใน

C: \ Users \ App Data \ Local \ "ชื่อแอปของคุณ" ...

เพียงแค่ลบโฟลเดอร์นี้และทำ ลองมัน.


2
ขอบคุณ. ฉันไม่สามารถแก้ไขปัญหาของฉันได้ด้วยแอปพลิเคชันของฉัน ฉันล้างไฟล์กำหนดค่าสร้างไฟล์. suo ใหม่ลบไฟล์. setset ที่มีอยู่ทั้งหมดและยังไม่สามารถโหลดจากไฟล์การตั้งค่าใหม่ใด ๆ แต่ไม่ได้รับข้อผิดพลาดใด ๆ จากบิลด์ ฝันร้ายนี้สิ้นสุดลงในที่สุด
Rachael

13

หากคุณเพิ่มส่วนกำหนดค่าที่กำหนดเองของคุณไปยังของคุณApp.Configตรวจสอบให้แน่ใจว่าคุณได้กำหนดหัวข้อใน<configSections>องค์ประกอบ ฉันเพิ่ม XML config ของฉันแล้ว แต่ลืมประกาศส่วนกำหนดค่าขึ้นด้านบน - ซึ่งทำให้เกิดข้อยกเว้น "ระบบการกำหนดค่าล้มเหลวในการเริ่มต้น" สำหรับฉัน


3
นอกจากนี้ - หากคุณมีส่วนประกาศขึ้นด้านบนและชื่อในส่วนด้านล่างมีตัวพิมพ์ผิดคุณจะได้รับข้อผิดพลาดนี้ หากคุณดูที่ InnerException ของข้อยกเว้นที่ส่งออกไปมันจะบอกคุณว่าส่วนใดเป็นปัญหา
shindigo

6

ฉันมีปัญหาเดียวกันนี้กับคลาส MSTest: Marlon Grech ในบทความของเขากล่าวว่า "องค์ประกอบจะต้องถูกกำหนดเป็นองค์ประกอบแรกใน App.config"

เพื่อให้แน่ใจว่าเป็นองค์ประกอบแรกในภายใต้องค์ประกอบ ฉันใส่ AppSettings ก่อน


ohh .. ไม่ดีของฉัน: คุณทำ แต่ฉันไม่ได้สังเกตเห็น ;-) ขอบคุณสำหรับการชี้แจง
kleopatra

4

ฉันรู้ว่าสิ่งนี้ได้รับคำตอบแล้ว แต่ฉันมีปัญหาเดียวกันในการทดสอบหน่วยของฉัน ฉันฉีกผมออก - เพิ่มส่วนการตั้งค่าแอพจากนั้นประกาศส่วนการกำหนดค่าตามคำตอบ ในที่สุดก็พบว่าฉันได้ประกาศส่วนแอปการตั้งค่าเพิ่มเติมไฟล์ config ของฉันแล้ว ทั้งสองส่วนชี้ไปที่ไฟล์การตั้งค่าภายนอกของฉัน "appSettings.config" แต่องค์ประกอบ appSettings แรกโดยใช้ไฟล์แอตทริบิวต์ในขณะที่อีกส่วนหนึ่งใช้แอตทริบิวต์configSource configSourceฉันรู้ว่าคำถามเกี่ยวกับการเชื่อมต่อสาย แน่นอนว่าสิ่งนี้เกิดขึ้นหากองค์ประกอบ appSettings เป็นองค์ประกอบ connectionStrings ที่ทำซ้ำด้วยแอตทริบิวต์ที่แตกต่างกัน

หวังว่านี่จะช่วยแก้ปัญหาให้คนอื่นก่อนที่พวกเขาจะเดินไปตามเส้นทางที่ฉันทำซึ่งนำไปสู่การสูญเสียเวลาหนึ่งหรือสองชั่วโมง ถอนหายใจโอ้ชีวิตของนักพัฒนาของเรา เราเสียเวลาหลายชั่วโมงในการดีบักมากกว่าที่เราใช้ในการพัฒนา!


การเล่นชนิดหนึ่ง มีappSettingsและapplicationSettingsทั้งสอง
SushiGuy

3

ฉันเริ่มได้รับปัญหานี้หลังจากถอนการติดตั้งไดรเวอร์ไคลเอนต์ Oracle และลบC: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ machine.configของฉันออกฉัน!

การคัดลอกจากคอมพิวเตอร์เครื่องอื่นแก้ปัญหาได้



3

หากคุณมีการตั้งค่าขอบเขตผู้ใช้คุณอาจมีไฟล์ user.config อยู่ใน[Userfolder]\AppData\Local\[ProjectName]โฟลเดอร์

หากคุณลบการตั้งค่าผู้ใช้กำหนดขอบเขตในภายหลัง user.config จะไม่ถูกลบออกโดยอัตโนมัติและการปรากฏตัวของมันอาจทำให้เกิดข้อผิดพลาดเดียวกัน การลบโฟลเดอร์นั้นเป็นเคล็ดลับสำหรับฉัน


1

ว้าวมันเอาฉันตลอดไปคิดออกอันนี้ ด้วยเหตุผลบางประการการเปลี่ยนแอตทริบิวต์[assembly: AssemblyCompany("CompanyName")]ที่AssemblyInfo.csทำให้ข้อผิดพลาดนี้หายไป [assembly: AssemblyCompany("CompanyName")]ผมได้รับการอ้างอิงโครงการที่มีมูลค่าแตกต่างกันสำหรับแอตทริบิวต์ ฉันทำให้แน่ใจว่าทั้งสองโครงการมีค่าคุณลักษณะเดียวกันและใช้งานได้ดีมาก!


นี่เป็นข้อบกพร่องหรือไม่? เราคาดว่าจะมีชื่อหนึ่งเดียวที่จะทำให้ชื่อ บริษัท ของคุณตรงกับโครงการของบุคคลที่สามที่คุณอ้างอิง
เดนิส Skidmore

1

ปัญหาเดียวกันกับฉันฉันแก้ไขปัญหาของฉันโดยการลบ verion = "v3.5" จาก App.config

ก่อน

 <?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>

นี่คือวิธีการใช้เวอร์ชันบน

องค์ประกอบรันไทม์สนับสนุน MSDN


1

หลังจากค้นหามานานฉันพบว่าข้อยกเว้นนี้มีข้อยกเว้นภายในที่จะบอกคุณว่าเกิดอะไรขึ้นกับไฟล์ปรับแต่งของคุณ


ฉันพยายามแสดงความคิดเห็นโดยไม่แสดงข้อคิดเห็นส่วนต่าง ๆ ของ app.config ของฉันและข้อยกเว้นไม่ได้ดูแม้แต่ข้อยกเว้นภายใน และหลังจากเห็นคำตอบนี้ฉันพบว่าปัญหาคืออะไร ขอบคุณ
ซิด

0

เป็นที่น่าสังเกตว่าถ้าคุณเพิ่มสิ่งต่าง ๆ เช่นสายเชื่อมต่อลงใน app.config ว่าถ้าคุณเพิ่มรายการนอกส่วน config ที่กำหนดไว้มันจะไม่บ่นทันที แต่เมื่อคุณลองและเข้าถึงมันคุณจะได้รับ ข้อผิดพลาดข้างต้น

ยุบส่วนสำคัญทั้งหมดและตรวจสอบให้แน่ใจว่าไม่มีรายการอยู่นอกรายการที่กำหนด เห็นได้ชัดว่าเมื่อคุณเห็นมันจริง


0

ในกรณีของฉันทางออกเดียวคือการเพิ่มการอ้างอิงไปยังSystem.Configurationในโครงการทดสอบของฉันเช่นกัน


0

นี่เป็นใบ้ แต่สำหรับฉันฉันแก้ไขโดยทำการรับล่าสุดจากแหล่งควบคุมในรหัสของฉัน ฉันคิดว่ามีองค์ประกอบการกำหนดค่าใหม่ที่เพิ่มโดยบุคคลอื่นและฉันต้องการเขียนทับไฟล์การกำหนดค่าของฉัน OP แสดงข้อผิดพลาดที่ฉันได้รับซึ่งไม่ได้ชี้ให้ฉันไปในทิศทางที่ถูกต้อง


0

ฉันประสบปัญหาเดียวกันเช่นกัน แต่ฉันบังเอิญเขียนโดยไม่ต้องเขียนสิ่งที่ก่อนหน้านี้ควรเข้าไปในแท็กนี้ ดังนั้นข้อผิดพลาด 'การกำหนดค่าระบบล้มเหลวในการเริ่มต้น' จึงเกิดขึ้น หวังว่ามันจะช่วย


0

ในกรณีของฉันฉันมีสองการกำหนดค่าในไฟล์ app.config หลังจากลบสิ่งที่ซ่อนอยู่ในบรรทัดโค้ดแล้วแอปก็ใช้งานได้ดี

ดังนั้นสำหรับบางคนที่มีปัญหาเดียวกันตรวจสอบว่าคุณมีการกำหนดค่าที่ซ้ำกันก่อน


0

หากคุณกำลังจัดการกับ 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>

หวังว่านี่จะช่วยได้


0

ในกรณีของฉันภายในไฟล์. edmx ของฉันฉันเรียกใช้คำสั่ง 'อัปเดตโมเดลจากฐานข้อมูล' คำสั่งนี้เพิ่มสตริงการเชื่อมต่อที่ไม่จำเป็นลงในไฟล์ app.config ของฉัน ฉันลบสตริงการเชื่อมต่อนั้นและทุกอย่างก็ดีอีกครั้ง


0

ฉันแก้ไขปัญหาโดยใช้รหัสด้านล่าง

   <?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>

0

พยายามบันทึกไฟล์. config เป็น utf-8 หากคุณมีอักขระ "พิเศษ" อยู่ในนั้น นั่นเป็นปัญหาในกรณีของแอปพลิเคชันคอนโซล


0

ในฐานะที่เป็น@Flash กอร์ดอนกล่าวถึงในความคิดเห็นของเขาคุณจะต้องกำหนดแท็กที่กำหนดเองใด ๆ (เป็นส่วนหนึ่ง) ของคุณในApp.config<configSections>ไฟล์ภายใต้ ตัวอย่างเช่นคุณกำลังทำงานในโครงการทดสอบอัตโนมัติด้วย SpecFlow & เพิ่ม<specFlow>แท็กจากนั้น App.config เวอร์ชันที่ง่ายที่สุดจะมีลักษณะดังนี้: ป้อนคำอธิบายรูปภาพที่นี่


0

ฉันเพิ่งมีสิ่งนี้และเป็นเพราะฉันมี<configuration>องค์ประกอบซ้อนกันอยู่ภายใน<configuration>องค์ประกอบ


0

ฉันรีสตาร์ท Visual Studio และแม้แต่พีซีทั้งหมด ฉันล้างโครงการสร้างใหม่และลบไฟล์ bin

ไม่มีอะไรช่วยจนกว่าฉันจะเปลี่ยนการกำหนดค่าจาก x64 เป็น x86 มันใช้งานได้กับ x86 แต่เมื่อฉันเปลี่ยนมันกลับมา


0

ฉันลองวิธีแก้ปัญหาทั้งหมดข้างต้นพยายามหาสาเหตุที่การทดสอบหน่วยหนึ่งของฉันล้มเหลวในการรับการกำหนดค่าจากไฟล์ app.config ที่สมบูรณ์แบบ

ฉันมีการอ้างอิง 2 ครั้งในแอสเซมบลีเดียวกันเช่น:

การอ้างอิงซ้ำ

ไฟล์โครงการก่อนและหลัง

การลบการอ้างอิง (ซ้ำ) สีเหลืองแก้ไขให้ฉัน

ฉันหวังว่านี่จะใช้ได้กับคนอื่นมันทำให้ฉันรู้สึกอึดอัด


0

ทางออกที่ง่ายสำหรับ. Net Core WinForms / WPF / .Net โครงการห้องสมุด Standard Class

ขั้นตอนที่ 1:ติดตั้งSystem.Configuration.ConfigurationManagerโดย Nuget Manager

ขั้นตอนที่ 2:เพิ่มApp.Configไฟล์ใหม่

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Bodrum" value="Yalikavak" />    
  </appSettings>
</configuration>

ขั้นตอนที่ 3:รับค่า

string value = ConfigurationManager.AppSettings.Get("Bodrum");
// value is Yalikavak

หากคุณกำลังเรียกมันจากClass Libraryนั้นเพิ่มApp.Configไฟล์ในโครงการหลักของคุณ


0

หากคุณมีส่วนที่กำหนดเองคุณต้องระบุว่าภายใต้ configSections ด้านล่างแท็กการกำหนดค่า

โปรดตรวจสอบไฟล์การแปลงของคุณตรวจสอบให้แน่ใจว่าคุณลบแท็กที่ไม่จำเป็นออกโดยเฉพาะส่วนที่จะต้องเปลี่ยนไปในไฟล์แปลง อย่าพูดถึงส่วนการตั้งค่าในไฟล์แปลงหากไม่จำเป็น สิ่งนี้จะทำให้เกิดปัญหาด้วย

หากคุณมีข้อผิดพลาดทางไวยากรณ์ใน machine.config ก็คาดว่าจะเกิดข้อผิดพลาดนี้เช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.