SORU
13 Kasım 2012, Salı


ConfigurationManager.AppSettings[Anahtar] Web'den oku.dosya her zaman config?

Ne kadar ConfigurationManager merak ediyorum.AppSettings[Anahtar] çalışır?

Fiziksel dosyasından anahtar lazım, her zaman okuyor mu?

Eğer öyleyse, benim web uygulaması tüm ayarları okusam.önbellek yapılandırma ve onu oku o zaman?

Ya ASP.NET veya IIS yükler web.ve sadece bir kez application_startup dosya config.

Nasıl fiziksel dosya okumak her tarafından erişilebilir olup olmadığını doğrulamak için?

Web değiştirirsem.yapılandırma, IIS uygulama yeniden bu şekilde kontrol edebilirsiniz.

Teşekkürler

CEVAP
13 Kasım 2012, Salı


Fiziksel dosyasından bir değer için size sormak her zaman okumuyor yani, bir özelliği ilk giriş önbelleğe alır. Bu en son değeri almak için Windows bir uygulama (veya Refresh config) yeniden başlatmak için neden gerekli olduğunu, ve ASP.NET bir uygulama web düzenlerken otomatik olarak yeniden neden olur.config. Zor yeniden kablolu neden cevap How to prevent an ASP.NET application restarting when the web.config is modified başvuruları ele alınmıştır.

Bu ILSpy kullanarak ve Sistem iç bakarak teyit edebiliriz.Yapılandırma:

public static NameValueCollection AppSettings
{
    get
    {
        object section = ConfigurationManager.GetSection("appSettings");
        if (section == null || !(section is NameValueCollection))
        {
            throw new ConfigurationErrorsException(SR.GetString("Config_appsettings_declaration_invalid"));
        }
        return (NameValueCollection)section;
    }
}

İlk başta, gerçekten bu bölüm her zaman alacak gibi görünüyor. GetSection bakarak:

public static object GetSection(string sectionName)
{
    if (string.IsNullOrEmpty(sectionName))
    {
        return null;
    }
    ConfigurationManager.PrepareConfigSystem();
    return ConfigurationManager.s_configSystem.GetSection(sectionName);
}

Kritik hatta burada PrepareConfigSystem() yöntemi; IInternalConfigSystem alan ConfigurationManager tarafından düzenlenen bir örneğini başlatır - beton türü ClientConfigurationSystem

Bu yük bir parçası olarak, Configuration sınıf örneği örneği. Bu sınıf, etkin bir yapılandırma dosyasının bir nesne temsili ve statik bir alanda ClientConfigurationSystem. ClientConfigurationHost özelliği tarafından yapılacak görüntülenir - bu nedenle, önbelleğe alınır.

Aşağıdaki (veya WPF uygulaması Windows Şeklinde) yaparak bu deneysel olarak test edebilirsiniz:

  1. Uygulaması başlatılıyor
  2. Access uygulamasında bir değer.config
  3. Bir değişiklik app.config
  4. Yeni değeri olup olmadığını görmek için
  5. ConfigurationManager.RefreshSection("appSettings") Ara
  6. Kontrol ederseniz yeni değeri varsa görmek.

Aslında, eğer sadece RefreshSection yöntemi üzerinde yorum okumak istiyorum eğer kendime biraz zaman kurtarabilirdim :-)

/// <summary>Refreshes the named section so the next time that it is retrieved it will be re-read from disk.</summary>
/// <param name="sectionName">The configuration section name or the configuration path and section name of the section to refresh.</param>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 3biblecom

    3biblecom

    23 NİSAN 2011
  • Jesse Pimenta

    Jesse Piment

    5 EKİM 2011
  • Julia Graf

    Julia Graf

    6 Mayıs 2006

İLGİLİ SORU / CEVAPLAR