我试图通过在app.config(或web.config)文件中的条目中设置兼容性开关“Switch.System.Xml.IgnoreEmptyKeySequences”,但似乎被忽略了。为了消除任何奇怪配置的可能性,我已经创建了一个全新的.NET 4.6 Web Forms项目(和相关的测试项目)在VS2015中。
我正在遵循 Microsoft 关于 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);
然后开关被设置成预期的状态(即对于valueWasFound
和valueFromContext
都得到true
的结果)。
但我非常希望在App.Config / web.config中进行此设置。
TryGetSwitch
得到的結果與您一樣,但在代碼中設置似乎有效。 - arfbtwn