Tôi đã nhận thấy trên một vài máy trong đó tệp user.config của ứng dụng của tôi bằng cách nào đó bị hỏng và trống khi mở. Tôi dường như không thể hiểu tại sao điều này lại xảy ra. Có một điều phổ biến mà có thể gây ra điều này? Bất kỳ cách nào để ngăn chặn điều này một cách an toàn?Điều gì khiến user.config bị trống? Và làm cách nào để khôi phục mà không cần khởi động lại?
Câu hỏi thứ hai của tôi là làm cách nào để tôi khôi phục trạng thái? Tôi bắt ngoại lệ và xóa tệp user.config, nhưng tôi không thể tìm cách khôi phục cấu hình mà không cần khởi động lại ứng dụng. Tất cả những gì tôi làm trên đối tượng Properties gây lỗi sau:
"hệ thống Cấu hình không thể khởi"
Reset, Nạp lại, và nâng cấp tất cả làm gì để giải quyết vấn đề.
Đây là mã của tôi để xóa sau khi ngoại lệ:
catch (System.Configuration.ConfigurationErrorsException ex)
{
string fileName = "";
if (!string.IsNullOrEmpty(ex.Filename))
fileName = ex.Filename;
else
{
System.Configuration.ConfigurationErrorsException innerException = ex.InnerException as System.Configuration.ConfigurationErrorsException;
if (innerException != null && !string.IsNullOrEmpty(innerException.Filename))
fileName = innerException.Filename;
}
if (System.IO.File.Exists(fileName))
System.IO.File.Delete(fileName);
}
Nếu file user.config là corrrupt, bạn phải khởi động lại, miễn là bạn thực sự lưu trữ các giá trị trong hồ sơ của khung cảnh. Lý do bạn phải khởi động lại là hiển nhiên, nếu tệp bị hỏng, ứng dụng của bạn ở trạng thái không ổn định. –
Đó là những gì tôi đã tìm ra. Tôi đã hy vọng có một cách để khôi phục cấu hình ứng dụng về cài đặt mặc định của nó trong thời gian chạy mà không cần phải khởi động lại - khi khởi động lại dường như rất không đáng tin cậy. – JeremyK
Tôi có một ứng dụng biểu diễn cùng một vấn đề này theo thời gian. Cho đến nay, tôi đã không tìm thấy một giải pháp cho, hoặc nguyên nhân gốc rễ của, vấn đề này. Ứng dụng đã chuyển từ .NET v3.5 sang phiên bản v4.0, do đó vấn đề có trong cả thời gian chạy v2.0 và v4.0. Có thể trùng lặp: http://stackoverflow.com/questions/3071651/how-to-catch-exception-when-loading-net-winform-app-user-config-file – harlam357