2015-09-14 18 views
10

"Switch.System.Xml.IgnoreEmptyKeySequences" uyumluluk anahtarını app.config (veya web.config) dosyasındaki bir girdiden ayarlamaya çalışıyorum ancak geçersiz kılınma görünür göz ardı edilmek. Herhangi bir garip konfigürasyon olasılığını ortadan kaldırmak için mevcut projemde VS2015'te yepyeni bir .Net 4.6 Web Formları projesi (ve ilgili test projesi) oluşturdum..Net 4.6 AppContextSwitchOverrides yapılandırmada bildirilen anahtarları ayarlama

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <runtime> 
    <AppContextSwitchOverrides value="Switch.System.Xml.IgnoreEmptyKeySequences=true"/> 
    </runtime> 
</configuration> 

ben değerini okumak için kullanıyorum kodudur: Ben appcontext için microsoft rehberlik takip ediyorum

app.config dosyası aşağıdaki gibidir https://msdn.microsoft.com/en-us/library/mt298997(v=vs.110).aspx ve https://msdn.microsoft.com/en-us/library/mt270286(v=vs.110).aspx

anahtarları

 bool valueWasFound; 
     bool valueFromContext; 

     string switchString = "Switch.System.Xml.IgnoreEmptyKeySequences"; 

     valueWasFound = AppContext.TryGetSwitch(switchString, out valueFromContext); 

Yine de her ikisi için false tutarlı bir şekilde aldım. valueWasFound ve valueFromContext.

Bunu, aynı sonuçla diğer anahtar değerleri ile denedim.

ben beklenen Sonra anahtarı ayarlanmıştır

AppContext.SetSwitch("Switch.System.Xml.IgnoreEmptyKeySequences", true); 

kullanarak kod anahtarı ayarlarsanız (ör ı valueWasFound ve valueFromContext ikisi için true olsun) görüyoruz.

Ama ben çok bu büyük takdir işe nasıl App.Config/web.config

Herhangi bir fikir bu ayarlamayı tercih ederim.

+0

Burada aynı davranışı görüyorum, ancak _Switch.System.IdentityModel.DisableMultipleDNSEntriesInSANCertificate_ anahtarıyla. Web.config dosyasında (IIS uygulaması) ayarlanması yok sayılır ve 'TryGetSwitch', sahip olduğunuzla aynı sonucu verir, kod olarak ayarlamak işe yarar. – arfbtwn

cevap

0

Çözüm gezgininizde App.config dosyasını değiştirmelisiniz. Bu dosya, YourAppName.exe.config olarak yeniden adlandırılacak ve binaries klasörünüzde olmalıdır. Bu dosyanın kaldırılması veya yeniden adlandırılması, bu geçişin geçersiz kılınmasına neden olmaz. (Bu dosyayı, binadan sonra elle de ekleyebilirsiniz)

Uygulamanızın yanına App.config dosyasını el ile eklemiş olmalısınız.

0

Aşağıdaki ayarda gözüken benzer davranışı gözlemledim. Net framework 4.6.2 <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=true"/> Tuhaf bir şey, normal olarak çalışırken davranışı değiştirmesiydi, ancak bir UTC'yi çalıştırmaya çalıştığımızda başarısız oluyordu.

0

Anahtar, kayıt defterine ekleme eklemektir. Çalışıyor gibi görünüyor.

MSDN belgeleri:

Adını kayıt HKLM \ SOFTWARE \ Microsoft.NETFramework \ appcontext anahtarına anahtarının adıdır bir dize değeri ekleyerek. Değeri, Boolean.Parse yöntemi tarafından ayrıştırılabilen bir Boolean'ın dize halinde temsilidir; Yani, "Doğru", "Doğru", "Yanlış" veya "yanlış" olmalıdır. Çalışma zamanı başka bir değerle karşılaştığında, anahtarı yok sayar. Benim durumumda

Bu

Değer adını yaptı: Switch.System.IdentityModel.DisableMultipleDNSEntriesInSANCertificate

Değer verisi: gerçek

enter image description here

olumsuz makinede tüm uygulamalar için geçerli olmasıdır. Kitabımdaki kayıt defteri ayarları kodda kodlanmış bir şeyden bile daha az tercih ediliyor, bu yüzden programa dayalı yaklaşıma bağlı kalacağım.

Bu numara sadece hızlı bir şekilde bir şeyler denemek için yine de temiz.

İlgili konular