أحصل على خطأ system.configuration.settingspropertynotfoundexception في خدمة Windows

StackOverflow https://stackoverflow.com/questions/8404832

سؤال

لدي تطبيق Windows يستخدمSettingsProvider لقراءة إعدادات التكوين وتعيين القيم الافتراضية في حالة عدم وجود الملف.

أنه يعمل بشكل جيد يعمل بشكل طبيعي.

أحاول كتابة خدمة Windows التي تبدأ هذا التطبيق.عندما يتم تشغيله من قبل الخدمة، وأحصل على System.Configuration.SettingsPropertyNotFoundException على كافة سمات الإعداد.

كيف يمكنني حل هذا الاستثناء عندما تقوم الخدمة بتشغيل التطبيق؟

هل كانت مفيدة؟

المحلول

وهذا يعني ببساطة أن التطبيق لا يمكنه قراءة ملف الإعدادات.يمكنني التفكير في سببين محتملين:

  1. تعمل الخدمة ضمن حساب ليس لديه حق الوصول إلى ملف الإعدادات.(أو ملف .config، حسب ذلك) هذا غير مرجح لأن الخدمة يمكنها تشغيل التطبيق، ولن يكون من المنطقي أن يكون لديها أذونات للتطبيق وليس ملف الإعدادات.

  2. وقت التشغيل لا يمكن يجد ملف الإعدادات.ويتوقع أن تكون الإعدادات في مسار بدء التشغيل الجذري للملف القابل للتنفيذ.تحقق للتأكد من وجوده على الجهاز المعني.

ومع ذلك، أظهرت إحدى نتائج Google سببًا محتملاً واضحًا لم أفكر فيه.هل تمت إضافة الإعدادات بعد التجميع الأخير؟قم بتجميع التطبيق في Visual Studio وحاول مرة أخرى...

نصائح أخرى

سبب آخر محتمل هو إذا كتبت مخصصًا SettingsProvider هذا هو الرمي والاستثناء أثناء Initialize.

في حالتي، لقد فعلت هذا:

public class CustomSettingsProvider : SettingsProvider
{
    public override void Initialize(string name, NameValueCollection config)
    {
        base.Initialize(name, config);
    }
}

منذ name يتم تمريره دائمًا كـ null, base.Initialize كان يرمي ArgumentNullException.لقد قمت بإصلاحه عن طريق تمرير اسم غير فارغ مثل هذا:

    public override void Initialize(string name, NameValueCollection config)
    {
        base.Initialize(name ?? GetType().Name, config);
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top