我試圖從app.config(或web.config)文件中的條目設置兼容性開關「Switch.System.Xml.IgnoreEmptyKeySequences」,但會出現重寫被忽略。 爲了消除任何奇怪配置的可能性,我已經在VS2015中創建了一個全新的.Net 4.6 Web Forms項目(和相關的測試項目)。.Net 4.6 AppContextSwitchOverrides沒有設置在配置中聲明的開關
我下面的AppContext微軟指導開關 https://msdn.microsoft.com/en-us/library/mt298997(v=vs.110).aspx和 https://msdn.microsoft.com/en-us/library/mt270286(v=vs.110).aspx
app.config文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Xml.IgnoreEmptyKeySequences=true"/>
</runtime>
</configuration>
我使用讀取值的代碼是:
bool valueWasFound;
bool valueFromContext;
string switchString = "Switch.System.Xml.IgnoreEmptyKeySequences";
valueWasFound = AppContext.TryGetSwitch(switchString, out valueFromContext);
但是我一直得到false
valueWasFound
和valueFromContext
。
我已經嘗試過與其他開關值相同的結果。
我發現,如果我設置使用
AppContext.SetSwitch("Switch.System.Xml.IgnoreEmptyKeySequences", true);
然後如預期開關在代碼中設置開關(即我得到true
兩個valueWasFound
和valueFromContext
)。
但是我非常喜歡這個設定在App.config/web.config中
任何想法如何,我得到這個工作,將不勝感激。
我在這裏看到相同的行爲,但是使用了_Switch.System.IdentityModel.DisableMultipleDNSEntriesInSANCertificate_開關。在Web.config(IIS應用程序)中設置它會被忽略,'TryGetSwitch'會得到和你一樣的結果,在代碼中設置它似乎是可行的。 – arfbtwn