2011-09-22 24 views
8

Tôi đã có một người sử dụng gửi cho tôi trong một báo cáo tai nạn từ một cuộc gọi đến Settings.Upgrade():Tệp cài đặt user.config của tôi bị hỏng như thế nào?

 
System.Configuration.ConfigurationErrorsException: Root element is missing. 

Tôi có anh gửi cho tôi tập tin user.config mình và tập tin là tất cả zero. Nó đã bị hư hỏng bằng cách nào đó.

Tôi tìm thấy một cách để khôi phục từ nó bằng cách rễ xung quanh thư mục% localappdata% \ MyAppName và xóa tất cả các tệp cấu hình người dùng và khởi chạy lại ứng dụng. Nếu tôi để ứng dụng tiếp tục thực thi, nó sẽ cung cấp thêm ConfigurationErrorsException s.

Tham nhũng này có thể là kết quả của việc tôi đã làm không? Tôi đã có nhiều báo cáo của nó từ một cơ sở của một vài nghìn người sử dụng, nhưng tôi đã không được rối tung với tập tin đó trực tiếp. Có ai khác chạy vào tham nhũng user.config này?

Trả lời

4

Chỉ là ý tưởng tôi nhận được từ số article này.

Bạn có thể kiểm tra phiên bản khung .Net của bạn và nếu có, gần đây bạn có thực hiện một số cập nhật có thể đã thay đổi bất kỳ phương pháp nào bạn đang sử dụng không?

Một số khác mặc dù là article (đó là một chút cũ - 2008) nhưng nó cung cấp một số gợi ý về cách xử lý tệp cấu hình bị hỏng.

Có thể đó cũng là vấn đề về bộ nhớ do ứng dụng không thể thực hiện được với tỷ lệ người dùng hiện tại?

Hy vọng điều đó sẽ hữu ích vì nó chưa xảy ra với tôi nhưng vẫn là một tình huống khó xử thú vị và khó hiểu.

+0

Tôi nghĩ mọi thứ đều ở dạng .NET thường xuyên. Đối với bài viết thứ hai, việc tìm đường dẫn chính xác đến tệp vi phạm là một mẹo tốt để chọn ra tệp bị hỏng thay vì thực hiện xóa hàng loạt. Thay vào đó, tôi sẽ thay đổi cách xử lý của mình để sử dụng nó. – RandomEngy

+1

Tôi đã gặp phải cùng một sự cố 4 lần trên vài nghìn ứng dụng đã cài đặt. Điều này xảy ra trong quá trình mất điện. Xóa tệp khiến ứng dụng hoạt động tốt, nhưng bạn mất cài đặt của người dùng. Đạo đức: không sử dụng các cài đặt từ Microsoft, hoặc, tốt hơn, hãy làm các ứng dụng web thay thế. –

+1

Theo dõi: Tôi hiện đang lưu trữ các cài đặt bằng cách sử dụng SQLite, có khả năng chống lại kiểu tham nhũng này. Tôi đã không có thêm vấn đề như thế này. – RandomEngy

1

Cài đặt dường như bị hỏng nếu chạy nhiều phiên bản ứng dụng của bạn. Nó có vẻ là một vấn đề thời gian, nhưng một cách tương đối dễ dàng để tái sản xuất là để có các ứng dụng khởi động chính nó và sau đó bỏ thuốc lá, và cố gắng lưu các thiết lập khi thoát.

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