2011-09-01 22 views
7

Sau rất nhiều ví dụ, tôi đã thêm dòng sau vào file app.config của tôi:C# - Settings.settings Khai mạc bị lỗi về xml hợp lệ trong app.config (khi configSource thêm)

Tất cả mọi thứ dường như làm việc khi tôi chạy ứng dụng nhưng khi tôi cố mở tệp Settings.settings, tôi gặp lỗi:

"Đã xảy ra lỗi khi đọc tệp app.config. Tệp có thể bị hỏng hoặc chứa XML không hợp lệ".

Tệp Cài đặt.settings mở nhưng tôi nhận được thông báo lỗi tương tự nếu tôi cố gắng lưu nó.

App.config file:

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

<userSettings> 
    <test.Properties.Settings> 
     <setting name="server" serializeAs="String"> 
      <value /> 
     </setting> 
     <setting name="database" serializeAs="String"> 
      <value /> 
     </setting> 
     <setting name="g_language" serializeAs="String"> 
      <value>en-US</value> 
     </setting> 
     <setting name="timeSchedule1" serializeAs="String"> 
      <value /> 
     </setting> 
     <setting name="timeSchedule2" serializeAs="String"> 
      <value /> 
     </setting> 
     <setting name="helpLocation" serializeAs="String"> 
      <value /> 
     </setting> 
     <setting name="SQLAuthType" serializeAs="String"> 
      <value>0</value> 
     </setting> 
     <setting name="SQLLogin" serializeAs="String"> 
      <value /> 
     </setting> 
     <setting name="SQLPsw" serializeAs="String"> 
      <value /> 
     </setting> 
     <setting name="defaultTimeZone" serializeAs="String"> 
      <value /> 
     </setting> 
    </test.Properties.Settings> 
</userSettings> 

<connectionStrings configSource = "testConnect.config"/> 

+0

Đây có phải là toàn bộ 'app.config' của bạn không? Nếu vậy, nó thiếu phần tử xung quanh '' ... ''. –

+1

Không, nó có những thứ khác - bằng cách nào đó đã bỏ lỡ nó trong bản sao & dán. – Pat

+1

Dường như nó liên quan đến configSource trên connectionStrings. Tôi đã thực hiện để loại bỏ phần đó khi tôi thực hiện thay đổi cài đặt và sau đó đưa nó trở lại. Tôi chỉ thấy điều này trong VS2008. – Carl

Trả lời

0

Nghe có vẻ như tập tin cấu hình ứng dụng của bạn không được cấu hình đúng cách, bạn có thể gửi bạn cấu hình ứng dụng?

4

Tôi chỉ trao một dự án mà đã tạo ra các lỗi tương tự khi bạn cố gắng để mở file Settings.settings:

"An error occurred while reading the app.config file. The file might be corrupted or contain invalid XML."

Sau khi đảm bảo rằng tài liệu XML là đúng cú pháp (sử dụng http://validator.w3.org), tôi loại bỏ Các phần tử XML cho đến khi lỗi biến mất.

Trong trường hợp của tôi, file app.config chứa hai connectionStrings yếu tố:

tạo ra lỗi

  • cấu hình
    • connectionStrings
      • thêm
    • connectionStrings
      • thêm

NO ERROR GENERATED

  • cấu hình
    • connectionStrings
      • thêm
      • thêm

Vì vậy, có vẻ như lỗi này có thể được tạo ra khi các ứng dụng.Tệp cấu hình chứa các phần tử chính xác về cú pháp, nhưng hợp lý không chính xác.

+0

Cùng một vấn đề - cùng một giải pháp. – Denis

+0

Tôi có cùng một vấn đề, nhưng tôi có hai trong số các thành phần

giống nhau trong . – bunggo

1

Tôi gặp phải lỗi tương tự trong khi đổi tên thủ công giải pháp, đó là dự án và không gian tên. Lỗi do các phần tử <section> trùng lặp trong nút <sectionGroup name="applicationSettings"> của tệp App.config gây ra. Tôi không chắc chắn hành động nào đã tạo ra các thành phần trùng lặp nhưng giải pháp là xóa phần tử trùng lặp.

0

Tôi cũng chỉ gặp sự cố này. Có vẻ như nó có thể được gây ra bởi nhiều "kỳ quặc" trong tệp app.config của bạn.

Con đường tôi giải quyết nó:

  1. Tạo một bản sao lưu của tập tin và cs cài đặt, cũng của app.config của bạn (chỉ trong trường hợp)
  2. Hủy bỏ các yếu tố configSections đề cập đến cài đặt, ví dụ userSettings từ app.config
  3. Tháo applicationSettings hoặc userSettings phần từ app.config
  4. Lưu app.config của bạn
  5. mở trình biên tập các thiết lập và thực hiện bất kỳ thay đổi nhỏ, tiết kiệm

Nếu bạn vẫn nhận lỗi, bắt đầu xóa từng phần một cho đến khi bạn tìm thấy phần trùng lặp/vi phạm.

2

Tôi có cùng một vấn đề. Như bạn, tôi có các chuỗi kết nối trong một tệp riêng biệt:

<connectionStrings configSource = "testConnect.config"/> 

Tôi không thể tìm được công việc xung quanh, ngoài việc loại bỏ phần tử trong khi làm việc với cài đặt.

0
<configuration> 
    <connectionStrings> 
    <add name="" 
    </connectionStrings> 
</configuration> 

Trong trường hợp của tôi, tôi có nhiều chuỗi kết nối và một trong các chuỗi trong <add name> bị trống. Tôi cũng có lỗi tương tự như Pressacco đã đề cập. Cảm ơn!

0

Tôi vượt qua con đường này quá muộn nhưng thậm chí tôi đã có cùng một vấn đề và mặc dù mọi thứ đều chính xác trong app.config, tôi đã nhận được lỗi này. Sau khi thêm một số cài đặt thuộc tính vào tệp app.config, tôi đã cố chỉnh sửa/mở tệp Settings.settings và đó là khi tôi gặp lỗi này. Những gì tôi đã làm là, tôi đã hoàn nguyên tất cả các thay đổi được thực hiện cho app.config và thêm tất cả các giá trị được yêu cầu trực tiếp vào tệp cài đặt, giải quyết vấn đề. Trực tiếp thêm giá trị vào app.config đã tạo ra sự cố.

0
  1. Trên một giải pháp VS khác, tạo dự án mới có cùng tên và không gian tên giống như tên bạn đang làm việc.
  2. Trong Thuộc tính >> Cài đặt cho dự án mới, tạo tất cả các cài đặt bạn có trong cài đặt bạn đang làm việc.
  3. Đi vào thư mục dự án mới, tức là C: \ Users \ YourUser \ Documents \ Visual Studio 2022 \ Projects \ ReportsApplication1 \ ReportsApplication1 và sao chép ứng dụng.tập tin
  4. Dán tập tin này cấu hình và thay thế một trong những dự án hiện tại của bạn
  5. (Done)
1

Tôi đang sử dụng configSource trong các yếu tố connectionStrings là tốt. Tôi nghĩ rằng vấn đề tôi đã có được rằng tôi đã đề cập đến tập tin cấu hình đi kèm với một đường dẫn liên quan đến thư mục mục tiêu xây dựng (ví dụ: bin \ debug \ ConnectionStrings.config). Tôi đã có mục ConnectionStrings.config được liên kết của tôi được đặt để sao chép vào thư mục đầu ra trên bản dựng. Tuy nhiên, VS IDE muốn giải quyết nó trước khi xây dựng từ app.settings thay vì bin\debug\program.exe.settings, vì vậy tôi bị kẹt hoặc có bản sao của tệp cấu hình bổ sung này trong mọi dự án (loại bỏ lợi ích) hoặc sử dụng đường dẫn đầy đủ. Nếu tôi sử dụng cách tiếp cận thứ hai, tôi cần thể hiện đường dẫn về một số loại biến môi trường để tệp cấu hình sẽ hoạt động trên một máy phát triển và máy triển khai. Đó có thể là doable, nhưng có vẻ như .NET won't actually expand the environment variables.

Nếu có ích, bạn có thể thử xác thực ứng dụng.config dựa vào lược đồ như được mô tả tại https://stackoverflow.com/a/311835/611672. Trong trường hợp của tôi, xml vượt qua xác thực nhưng tôi vẫn nhận được thông báo lỗi.

Ngoài ra, nếu có ai gặp sự cố khi thêm Mã di chuyển đầu tiên với thiết lập này (gặp phải lỗi không thể tìm thấy connectionStrings.config), đây có thể là nguyên nhân gốc.

Các vấn đề liên quan