<AppContextSwitchOverrides> 元素
定义 AppContext 类使用的一个或多个开关,用于提供新功能的选择退出机制。
<配置>
<运行时>
<AppContextSwitchOverrides>
语法
<AppContextSwitchOverrides value="name1=value1[[;name2=value2];...]" />
特性和元素
下列各节描述了特性、子元素和父元素。
特性
属性 | 说明 |
---|---|
value |
必填。 定义一个或多个开关名称及其关联的布尔值。 |
value 属性
值 | 说明 |
---|---|
"name=value" | 预定义的开关名称及其值(true 或 false )。 用分号(“;”)分隔多个开关名称/值对。 有关 .NET Framework 支持的预定义开关名称列表,请参阅“备注”部分。 |
子元素
无。
父元素
元素 | 说明 |
---|---|
configuration |
公共语言运行时和 .NET Framework 应用程序所使用的每个配置文件中的根元素。 |
runtime |
包含有关运行时初始化选项的信息。 |
备注
从 .NET Framework 4.6 开始,API 的调用方可以通过配置文件中的 <AppContextSwitchOverrides>
元素确定其应用是否能够利用新功能或与以前的库版本保持兼容。 例如,如果 API 的行为在两个库版本之间有变化,则该 API 的调用方可以通过 <AppContextSwitchOverrides>
元素,在支持新功能的库版本上选择停用新行为。 对于在 .NET Framework 中调用 API 的应用, <AppContextSwitchOverrides>
如果应用在包含该功能的 .NET Framework 版本上运行,则元素还可以允许应用面向早期版本的 .NET Framework 的调用方选择加入新功能。
<AppContextSwitchOverrides>
元素的 value
属性由单个字符串组成,而该字符串由一个或多个以分号分隔的名称/值对组成。 每个名称标识一个兼容性开关,其对应的值是一个布尔值(true
或 false
),指示是否设置了该开关。 默认情况下,开关为 false
,库将提供新功能。 仅当设置了开关(即其值为 true
)时,库才提供先前的功能。 这样,库便可以为现有 API 提供新行为,同时允许依赖于先前行为的调用方选择停用新功能。
.NET Framework 支持以下开关:
开关名称 | 说明 | 已引入 |
---|---|---|
Switch.MS.Internal. DoNotApplyLayoutRoundingToMarginsAndBorderThickness |
控制 Windows Presentation Foundation 是否使用传统算法进行控件布局。 有关详细信息,请参阅缓解:WPF 布局。 | .NET Framework 4.6 |
Switch.MS.Internal. UseSha1AsDefaultHashAlgorithmForDigitalSignatures |
控制 PackageDigitalSignatureManager 是使用 SHA1 还是 SHA256 作为默认算法来对包的组成部分进行签名。 由于与 SHA1 冲突,Microsoft 建议使用 SHA256。 |
.NET Framework 4.7.1 |
Switch.System.Activities. UseMD5CryptoServiceProviderForWFDebugger |
如果设置为 false ,则允许在启用 FIPS 的情况下使用 Visual Studio 调试基于 XAML 的工作流项目。 否则,会在调用 System.Activities 程序集中的方法时引发 NullReferenceException。 |
.NET Framework 4.7 |
Switch.System.Activities. UseMD5ForWFDebugger |
控制调试器中工作流实例的校验和是使用 MD5 还是 SHA1。 | .NET Framework 4.7 |
Switch.System.Activities. UseSHA1HashForDebuggerSymbols |
控制工作流校验和哈希运算是使用 .NET Framework 4.7 中引入为默认算法的 SHA1 算法 (true ),还是使用 .NET Framework 4.8 中引入为默认算法的 SHA256 算法 (false )。由于与 SHA1 冲突,Microsoft 建议使用 SHA256。 |
.NET Framework 4.8 |
Switch.System.Diagnostics. IgnorePortablePDBsInStackTraces |
控制在使用可移植 PDB 时获取的堆栈跟踪是否可以包含源文件和行信息。 如果可以包含源文件和行信息,则为 false ;否则为 true 。 |
.NET Framework 4.7.2 |
Switch.System.Drawing. DontSupportPngFramesInIcons |
控制当 Icon 对象包含 PNG 帧时,Icon.ToBitmap 方法是否引发异常。 有关详细信息,请参阅缓解:图标对象中的 PNG 帧。 | .NET Framework 4.6 |
Switch.System.Drawing.Text. DoNotRemoveGdiFontsResourcesFromFontCollection |
确定通过 PrivateFontCollection.AddFontFile(String) 方法将 System.Drawing.Text.PrivateFontCollection 对象添加到集合时是否正确释放这些对象。 如果为 true ,则保留传统行为;如果为 false ,则释放所有专用字体对象。 |
.NET Framework 4.7.2 |
Switch.System.Drawing.Printing. OptimizePrintPreview |
控制是否针对网络打印机优化 PrintPreviewDialog 的性能。 有关详细信息,请参阅 PrintPreviewDialog 控件概述。 | .NET Framework 4.6 |
Switch.System.Globalization.EnforceJapaneseEraYearRanges |
控制是否对日本历代年号强制执行年份范围检查。 如果为 true ,则强制执行年份范围检查,如果为 false ,则禁用这些检查(默认行为)。 有关详细信息,请参阅使用日历。 |
.NET Framework 4.6 |
Switch.System.Globalization.EnforceLegacyJapaneseDateParsing |
控制在分析操作中是否仅将“1”识别为日本历代年号的第一年。 如果为 true ,则仅识别“1”;如果为 false ,则识别“1”或“Gannen”(默认行为)。 有关详细信息,请参阅使用日历。 |
.NET Framework 4.6 |
Switch.System.Globalization.FormatJapaneseFirstYearAsANumber |
控制在格式化操作中是要将日本历代年号的第一年表示为“1”还是“Gannen”。 如果为 true ,则将年号的第一年格式化为“1”;如果为 false ,则将其格式化为“Gannen”(默认行为)。 有关详细信息,请参阅使用日历。 |
.NET Framework 4.6 |
Switch.System.Globalization.NoAsyncCurrentCulture |
控制异步操作是否不从调用线程的上下文流动。 有关详细信息,请参阅 CurrentCulture 和 CurrentUICulture 跨任务流动。 | .NET Framework 4.6 |
Switch.System.IdentityModel. DisableMultipleDNSEntriesInSANCertificate |
控制 X509CertificateClaimSet.FindClaims 方法是否尝试仅将声明类型与最后一个 DNS 条目进行匹配。 有关详细信息,请参阅缓解:X509CertificateClaimSet.FindClaims 方法。 | .NET Framework 4.6.1 |
Switch.System.IdentityModel. EnableCachedEmptyDefaultAuthorizationContext |
控制是否允许 AuthorizationContext.Empty 返回可变对象。 | .NET Framework 4.6 |
Switch.System.IO.BlockLongPaths |
控制长度超过 MAX_PATH (260 个字符)的路径是否引发 PathTooLongException。 有关详细信息,请参阅长路径支持。 |
.NET Framework 4.6.2 |
Switch.System.IO.Compression. DoNotUseNativeZipLibraryForDecompression |
控制 DeflateStream 类是否使用本机操作系统例程进行解压缩。 如果为 false ,则使用本机 API;如果为 true ,则使用 DeflateStream 实现。 |
.NET Framework 4.7.2 |
Switch.System.IO.Compression.ZipFile. UseBackslash |
使用反斜杠(“\”)而不是正斜杠(“/”)作为 ZipArchiveEntry.FullName 属性中的路径分隔符。 有关详细信息,请参阅缓解:ZipArchiveEntry.FullName 路径分隔符。 | .NET Framework 4.6.1 |
Switch.System.IO.Ports. DoNotCatchSerialStreamThreadExceptions |
控制在使用 SerialPort 流创建的后台线程上引发的操作系统异常是否终止进程。 | .NET Framework 4.7.1 |
Switch.System.IO. UseLegacyPathHandling |
控制是否使用传统路径规范化,以及 Path.GetDirectoryName 和 Path.GetPathRoot 方法是否支持 URI 路径。 有关详细信息,请参阅缓解措施:路径规范化和缓解措施:路径冒号检查。 | .NET Framework 4.6.2 |
Switch.System. MemberDescriptorEqualsReturnsFalseIfEquivalent |
控制相等性测试是否将一个对象的 MemberDescriptor.Category 属性与第二个对象的 MemberDescriptor.Description 属性进行比较。 有关详细信息,请参阅 MemberDescriptor.Equals 的错误实现。 | .NET Framework 4.6.2 |
Switch.System.Net. DontCheckCertificateEKUs |
禁用证书增强型密钥使用 (EKU) 对象标识符 (OID) 验证。 增强型密钥使用 (EKU) 扩展是指示使用密钥的应用程序的对象标识符 (OID) 的集合。 | .NET Framework 4.6 |
Switch.System.Net. DontEnableSchSendAuxRecord |
通过禁用 SCH_SEND_AUX_RECORD 来禁用 TLS1.0 针对 SSL/TLS 的浏览器攻击 (BEAST) 缓解措施。 | .NET Framework 4.6 |
Switch.System.Net. DontEnableSchUseStrongCrypto |
控制 System.Net.ServicePointManager 和 System.Net.Security.SslStream 类是否可以使用 SSL 3.0 协议。 有关详细信息,请参阅缓解:TLS 协议。 | .NET Framework 4.6 |
Switch.System.Net. DontEnableSystemDefaultTlsVersions |
禁用将 SystemDefault TLS 版本还原为默认值 Tls12、Tls11、Tls。 | .NET Framework 4.7 |
Switch.System.Net. DontEnableTlsAlerts |
禁用 SslStream TLS 服务器端警报。 | .NET Framework 4.7 |
Switch.System.Runtime.InteropServices. DoNotMarshalOutByrefSafeArrayOnInvoke |
控制 COM 互操作事件中的 ByRef SafeArray 参数是否封送回本机代码 (false ),或者是否禁用封送回本机代码 (true )。 |
.NET Framework 4.8 |
Switch.System.Runtime.Serialization. DoNotUseECMAScriptV6EscapeControlCharacter |
控制 DataContractJsonSerializer 是否根据 ECMAScript V6 和 V8 标准序列化某些控制字符。 有关详细信息,请参阅缓解:使用 DataContractJsonSerializer 对控制字符进行序列化 | .NET Framework 4.7 |
Switch.System.Runtime.Serialization. DoNotUseTimeZoneInfo |
控制 DataContractJsonSerializer 是支持对时区进行多项调整,还是仅支持一项调整。 如果为 true ,则使用 TimeZoneInfo 类型来序列化和反序列化日期和时间数据;否则使用 TimeZone 类型,该类型不支持多个调整规则。 |
.NET Framework 4.6.2 |
Switch.System.Runtime.Serialization.UseNewMaxArraySize |
控制 System.Runtime.Serialization.ObjectManager 在对象序列化和反序列化期间是否使用较大的数组大小。 将此开关设置为 true 可以提高按类型(例如 BinaryFormatter)序列化和反序列化大对象图时的性能。 |
.NET Framework 4.7.2 |
Switch.System.Security.ClaimsIdentity. SetActorAsReferenceWhenCopyingClaimsIdentity |
控制 ClaimsIdentity(IIdentity) 构造函数是否使用现有对象引用设置新对象的 ClaimsIdentity.Actor 属性。 有关详细信息,请参阅缓解:ClaimsIdentity 构造函数。 | .NET Framework 4.6.2 |
Switch.System.Security.Cryptography. AesCryptoServiceProvider.DontCorrectlyResetDecryptor |
控制尝试重用 AesCryptoServiceProvider 解密器是否引发 CryptographicException。 有关详细信息,请参阅 AesCryptoServiceProvider 解密器提供可重用的转换。 | .NET Framework 4.6.2 |
Switch.System.Security.Cryptography. DoNotAddrOfCspParentWindowHandle |
控制 CspParameters.ParentWindowHandle 属性的值是否为表示窗口句柄内存位置的 IntPtr,或者是否为窗口句柄 (HWND)。 有关详细信息,请参阅缓解:应向 CspParameters.ParentWindowHandle 分配 HWND。 | .NET Framework 4.7 |
Switch.System.Security.Cryptography. UseLegacyFipsThrow |
控制在 FIPS 模式下使用托管加密类是引发 CryptographicException (true ) 还是依赖于系统库的实现 (false )。 |
.NET Framework 4.8 |
Switch.System.Security.Cryptography.Pkcs. UseInsecureHashAlgorithms |
确定某些 SignedCMS 操作的默认值是 SHA1 还是 SHA256。 由于与 SHA1 冲突,Microsoft 建议使用 SHA256。 |
.NET Framework 4.7.1 |
Switch.System.Security.Cryptography.X509Certificates. ECDsaCertificateExtensions.UseLegacyPublicKeyReader |
控制 ECDsaCertificateExtensions.GetECDsaPublicKey 方法是正确处理操作系统支持的所有命名曲线 (false ) 还是还原为传统行为。 |
.NET Framework 4.8 |
Switch.System.Security.Cryptography.Xml. UseInsecureHashAlgorithms |
确定某些 SignedXML 操作的默认值是 SHA1 还是 SHA256。 由于与 SHA1 冲突,Microsoft 建议使用 SHA256。 |
.NET Framework 4.7.1 |
Switch.System.ServiceModel. AllowUnsignedToHeader |
确定 TransportWithMessageCredential 安全模式是否允许带有无符号“to”标头的消息。 这是一个可选择使用的开关。 有关详细信息,请参阅 .NET Framework 4.6.1 中的运行时更改。 |
.NET Framework 4.6.1 |
Switch.System.ServiceModel. DisableAddressHeaderCollectionValidation > |
控制当某个元素为 null 时,AddressHeaderCollection(IEnumerable<AddressHeader>) 构造函数是否引发 ArgumentException。 |
.NET Framework 4.7.1 |
Switch.System.IdentityModel. DisableCngCertificates |
确定尝试通过 CSG 密钥存储提供程序使用 X509 证书是否引发异常。 有关详细信息,请参阅 WCF 传输安全性支持使用 CNG 存储的证书。 | .NET Framework 4.6.1 |
Switch.System.ServiceModel. DisableExplicitConnectionCloseHeader |
将 HTTP 传输与自承载服务配合使用时,将此值设置为 true 会导致 WCF 忽略将 Connection: close 标头添加到请求响应标头的应用程序。 将此值设置为 false 可将 Connection: close 标头添加到响应标头,这会导致在发送响应后关闭请求套接字。 |
.NET Framework 4.6 |
Switch.System.ServiceModel. DisableOperationContextAsyncFlow |
处理由于每次将可重入服务的实例限制为单个执行线程而导致的死锁。 | .NET Framework 4.6.2 |
Switch.System.ServiceModel. DisableUsingServicePointManagerSecurityProtocols |
与 Switch.System.Net.DontEnableSchUseStrongCrypto 共同确定 WCF 消息安全性是否使用 TLS 1.1 和 TLS 1.2。 |
.NET Framework 4.7 |
Switch.System.ServiceModel. DontEnableSystemDefaultTlsVersions |
如果值为 false ,则会设置默认配置以允许操作系统选择协议。 如果值为 true ,则将默认值设置为可用的最高协议。 (也可以在旧框架版本的服务分支上使用) |
.NET Framework 4.7.1 |
Switch.System.ServiceModel. UseSha1InMsmqEncryptionAlgorithm |
确定 WCF 中 MSMQ 消息的默认消息签名算法是 SHA1 还是 SHA256。 由于与 SHA1 冲突,Microsoft 建议使用 SHA256。 |
.NET Framework 4.7.1 |
Switch.System.ServiceModel. UseSha1InPipeConnectionGetHashAlgorithm |
控制 WCF 是使用 SHA1 还是 SHA256 哈希来为命名管道生成随机名称。 由于与 SHA1 冲突,Microsoft 建议使用 SHA256。 |
.NET Framework 4.7.1 |
Switch.System.ServiceModel.Internals IncludeNullExceptionMessageInETWTrace |
控制当异常消息为 null 时是否引发 NullReferenceException。 | .NET Framework 4.7 |
Switch.System.ServiceProcess. DontThrowExceptionsOnStart |
控制是否将服务启动时引发的异常传播到 ServiceBase.Run 方法的调用方。 | .NET Framework 4.7.1 |
Switch.System.Threading.UseNetCoreTimer |
控制 Timer 实例是否利用大规模环境的性能改进。 如果为 true ,则启用性能改进;如果为 false (默认值),则禁用性能改进。 |
.NET Framework 4.8 |
Switch.System.Uri. DontEnableStrictRFC3986ReservedCharacterSets |
确定有时被解码的某些百分比编码字符现在是否一直保持编码状态。 如果保持解码状态,则为 true ;否则为 false 。 |
.NET Framework 4.7.2 |
Switch.System.Uri. DontKeepUnicodeBidiFormattingCharacters |
确定 URI 中 Unicode 双向字符的处理。 如果为 true ,则从 URI 中去除这些字符;如果为 false ,则保持对其进行百分比编码。 |
.NET Framework 4.7.2 |
Switch.System.Windows.Controls.Grid. StarDefinitionsCanExceedAvailableSpace |
确定 Windows Presentation Foundation 在为 * 列分配空间时是应用旧算法 (true ) 还是新算法 (false )。 有关详细信息,请参阅缓解:网格控件向 *-列分配空间。 |
.NET Framework 4.7 |
Switch.System.Windows.Controls.TabControl. SelectionPropertiesCanLagBehindSelectionChangedEvent |
控制在引发选择更改事件之前,选择器或选项卡控件是否始终更新其选定值属性的值。 | .NET Framework 4.7.1 |
Switch.System.Windows.Controls.Text. UseAdornerForTextboxSelectionRendering |
确定是否可为 TextBox 和 PasswordBox 控件使用基于非装饰器的选择呈现,以防止文本被遮挡 (false ),或者文本是否仅在装饰器层中呈现 (true )。 |
.NET Framework 4.7.2 |
Switch.System.Windows.Data.Binding. IListIndexerHidesCustomIndexer |
控制 System.Windows.Data.Binding 类是错误地 (true ) 还是正确地 (false ) 使用自定义 IList 索引器。 |
.NET Framework 4.8 |
Switch.System.Windows.DoNotScaleForDpiChanges |
确定是要基于系统(值为 false )还是基于监视器(值为 true )进行 DPI 更改。 |
.NET Framework 4.6.2 |
Switch.System.Windows. DoNotUsePresentationDpiCapabilityTier2OrGreater |
控制当 WPF 在基于监视器的感知模式下运行时,是要禁用 (true ) 还是启用 (false ) System.Windows.Interop.HwndHost 中的控件大小调整改进。 |
.NET Framework 4.8 |
Switch.System.Windows.Forms. DisconnectUiaProvidersOnWmDestroy |
控制在销毁 (true ) 或不销毁 (false ) 相应控件窗口时是否断开提供程序的连接。 此开关提供对性能修复的选择,以解决对象的泄漏 IRawElementProviderSimple 问题。 |
.NET Framework 4.8 |
Switch.System.Windows.Forms. DomainUpDown.UseLegacyScrolling |
确定当存在控制文本时,开发人员是否需要专门处理 DomainUpDown.UpButton() 操作。 如果为 true ,则处理 UpButton() 操作;如果为 false ,则使 DomainUpDown.UpButton() 和 DomainUpDown.DownButton() 操作正确同步。 |
.NET Framework 4.7.2 |
Switch.System.Windows.Forms. DontSupportReentrantFilterMessage |
选择停用允许自定义 IMessageFilter.PreFilterMessage 实现安全筛选消息且不在调用 Application.FilterMessage 方法时引发异常的代码。 有关详细信息,请参阅缓解:自定义 IMessageFilter.PreFilterMessage 实现。 | .NET Framework 4.6.1 |
Switch.System.Windows.Forms. UseLegacyContextMenuStripSourceControlValue |
确定当用户从嵌套的 ToolStripMenuItem 控件打开菜单时,ContextMenuStrip.SourceControl 属性是否返回源代码管理。 如果为 true ,则返回 null ,这是传统行为;如果为 false ,则返回源代码管理。 |
.NET Framework 4.7.2 |
Switch.System.Windows.Forms.UseLegacyToolTipDisplay |
控制是要禁用 (true ) 还是启用 (false ) 工具提示调用支持。 启用工具提示调用支持还需要禁用 Switch.UseLegacyAccessibilityFeatures 、Switch.UseLegacyAccessibilityFeatures.2 和 Switch.UseLegacyAccessibilityFeatures.3 定义的所有传统辅助功能(设置为 false )。 |
.NET Framework 4.8 |
Switch.System.Windows.Input.Stylus. EnablePointerSupport |
确定是否在 WPF 应用程序中启用可选的基于 WM_POINTER 的触摸/触控笔堆栈。 有关详细信息,请参阅缓解措施:基于指针的触摸和触控笔支持 |
.NET Framework 4.7 |
Switch.System.Windows.Markup. DoNotUseSha256ForMarkupCompilerChecksumAlgorithm |
确定用于校验和的默认哈希算法是 SHA256 (false ) 还是 SHA1 (true )。由于与 SHA1 冲突,Microsoft 建议使用 SHA256。 |
.NET Framework 4.7.2 |
Switch.System.Windows.Media.ImageSourceConverter. OverrideExceptionWithNullReferenceException |
控制是否引发传统的 NullReferenceException,而不是更具体地指出异常原因的异常(例如 DirectoryNotFoundException 或 FileNotFoundException)。 此开关旨在供依赖处理 NullReferenceException 的代码使用。 | .NET Framework 4.7 |
Switch.System.Workflow.ComponentModel. UseLegacyHashForXomlFileChecksum |
控制工作流项目生成中 XOML 文件的校验和哈希运算是使用 MD5 算法 (true ),还是使用 .NET Framework 4.8 中引入为默认算法的 SHA256 算法。由于与 MD5 冲突,Microsoft 建议使用 SHA256。 |
.NET Framework 4.8 |
Switch.System.Workflow.Runtime. UseLegacyHashForSqlTrackingCacheKey |
控制 SqlTrackingService 的校验和哈希运算是对缓存的字符串使用 MD5 算法 (true ),还是使用 .NET Framework 4.8 中引入为默认算法的 SHA256 算法。由于与 MD5 冲突,Microsoft 建议使用 SHA256。 |
.NET Framework 4.8 |
Switch.System.Workflow.Runtime. UseLegacyHashForWorkflowDefinitionDispenserCacheKey |
控制工作流运行时的校验和哈希运算是对缓存的工作流定义使用 MD5 算法 (true ),还是使用 .NET Framework 4.8 中引入为默认算法的 SHA256 算法。由于与 MD5 冲突,Microsoft 建议使用 SHA256。 |
.NET Framework 4.8 |
Switch.UseLegacyAccessibilityFeatures |
控制是要启用还是禁用从 .NET Framework 4.7.1 开始推出的辅助功能。 | .NET Framework 4.7.1 |
Switch.UseLegacyAccessibilityFeatures.2 |
控制是要启用 (false ) 还是禁用 (true ) .NET Framework 4.7.2 中推出的辅助功能。 如果为 true ,则 Switch.UseLegacyAccessibilityFeatures 也必须为 true ,这样才能启用 .NET Framework 4.7.1 辅助功能。 |
.NET Framework 4.7.2 |
Switch.UseLegacyAccessibilityFeatures.3 |
控制是要启用 (false ) 还是禁用 (true ) .NET Framework 4.8 中引入的辅助功能。 如果为 true ,则 Switch.UseLegacyAccessibilityFeatures 和 Switch.UseLegacyAccessibilityFeatures.2 也必须为 true 。 |
.NET Framework 4.8 |
Switch.UseLegacyToolTipDisplay |
控制当用户将鼠标光标悬停在 WPF 控件上时是否显示工具提示 (true ),或者是否通过键盘焦点和快捷键显示工具提示(false ,默认行为)。 对于在 .NET Framework 4.8 上运行的但面向 .NET Framework 早期版本的应用程序,启用键盘焦点和快捷键支持需要将 Switch.UseLegacyAccessibilityFeatures 、Switch.UseLegacyAccessibilityFeatures.2 和 Switch.UseLegacyAccessibilityFeatures.3 都设置为 false 。 |
.NET Framework 4.8 |
Switch.System.Xml. IgnoreEmptyKeySequences |
控制 XSD 架构验证是否忽略组合键中的空键序列。 有关详细信息,请参阅缓解措施:XML 架构验证。 | .NET Framework 4.6 |
注意
你还可以通过调用 AppContext.SetSwitch 方法以编程方式设置开关,而不必将 AppContextSwitchOverrides
元素添加到应用程序配置文件。
库开发人员还可以定义自定义的开关,以允许调用方选择停用较高库版本中引入的已更改的功能。 有关更多信息,请参见 AppContext 类。
ASP.NET 应用中的开关
可以通过将 <Add> 元素添加到 web.config 文件的 <appSettings> 节,将 ASP.NET 应用程序配置为使用兼容性设置。
以下示例使用 <add>
元素将两个设置添加到 web.config 文件的 <appSettings>
节:
<appSettings>
<add key="AppContext.SetSwitch:Switch.System.Globalization.NoAsyncCurrentCulture" value="true" />
<add key="AppContext.SetSwitch:Switch.System.Uri.DontEnableStrictRFC3986ReservedCharacterSets" value="true" />
</appSettings>
示例
以下示例使用 AppContextSwitchOverrides
元素定义单个应用程序兼容性开关 Switch.System.Globalization.NoAsyncCurrentCulture
,以防止区域性在异步方法调用中跨线程流动。
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Globalization.NoAsyncCurrentCulture=true" />
</runtime>
</configuration>
以下示例使用 AppContextSwitchOverrides
元素定义两个应用程序兼容性开关:Switch.System.Globalization.NoAsyncCurrentCulture
和 Switch.System.IO.BlockLongPaths
。 用分号分隔两个名称/值对。
<configuration>
<runtime>
<AppContextSwitchOverrides
value="Switch.System.Globalization.NoAsyncCurrentCulture=true;Switch.System.IO.BlockLongPaths=true" />
</runtime>
</configuration>