it-swarm.asia

قراءة مفتاح من Web.Config باستخدام ConfigurationManager

أحاول قراءة المفاتيح من ملف Web.config في طبقة مختلفة عن طبقة الويب (الحل نفسه)

هنا ما أحاول:

string userName = System.Configuration.ConfigurationManager.AppSettings["PFUserName"];
string password = System.Configuration.ConfigurationManager.AppSettings["PFPassWord"];

وهنا appSettings الخاص بي في ملف Web.config:

<configuration>
   ....
   <appSettings>
      <add key="PFUserName" value="myusername"/>
      <add key="PFPassWord" value="mypassword"/>
   </appSettings>
   ....
</configuration>

عندما أقوم بتصحيح الرمز ، يكون username و password مجرد null ، لذلك لا يحصل على قيمة المفاتيح.

ماذا أفعل الخطأ لقراءة هذه القيم؟

261
twal

حاول استخدام فئة WebConfigurationManager بدلاً من ذلك. فمثلا:

string userName = WebConfigurationManager.AppSettings["PFUserName"]
435
Hector Correa
  var url = ConfigurationManager.AppSettings["ServiceProviderUrl"];
34
yogee

لقد وجدت أن هذا الحل مفيد للغاية . يستخدم C # 4.0 DynamicObject لفاف ConfigurationManager. لذا بدلاً من الوصول إلى قيم مثل هذا:

 WebConfigurationManager.AppSettings["PFUserName"]

يمكنك الوصول إليهم كخاصية:

dynamic appSettings = new AppSettingsWrapper();
Console.WriteLine(appSettings.PFUserName);  

EDIT: إضافة مقتطف الشفرة في حالة ارتباط يصبح غير صالح:

public class AppSettingsWrapper : DynamicObject
{
     private NameValueCollection _items;

    public AppSettingsWrapper()
    {
        _items = ConfigurationManager.AppSettings;
    }

     public override bool TryGetMember(GetMemberBinder binder, out object result)
    {
        result = _items[binder.Name];
        return result != null;
    }
}
6
mateuscb

إذا كان المتصل مشروعًا آخر ، فيجب عليك كتابة التكوين في مشروع المتصل وليس المشروع المتصل.

6
Saber

سيكون هناك ملفين Web.config. أعتقد أنك قد تكون في حيرة من أمرك مع هذين الملفين.

التحقق من هذه الصورة:

click this link and check this image

في هذه الصورة ، يمكنك رؤية ملفين Web.config. يجب عليك إضافة الثوابت الخاصة بك إلى الموجود في مجلد المشروع وليس في مجلد طرق العرض

نأمل أن يكون هذا قد تساعدك

2
raja gangadhar

المسار الكامل لذلك هو

System.Configuration.ConfigurationManager.AppSettings["KeyName"]
2
Siddhartha

كما يمكنك تجربة هذا الخط للحصول على قيمة السلسلة من ملف app.config.

var strName= ConfigurationManager.AppSettings["stringName"];
1
Ram Beer Singh

تحدث هذه المشكلة إذا كان هذا المشروع قيد الاستخدام من قبل مشروع آخر. تأكد من نسخ مفاتيح إعداد التطبيق إلى app.config للمشروع الأصل أو web.config.

1
Karthikeyan Muthu