使用 WCF.NET Framework 4.6 中发送 XML SOAP 消息时的性能问题

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 3076436
症状
假设您已在您的计算机上升级到 Microsoft.NET Framework 4.6。您在使用的应用程序使用 Windows 通讯 Framework(WCF) 发送 XML SOAP 消息时可能需要稍长的编码。在某些情况下这可能会影响服务器应用程序处理请求的速度。
原因
名为 RyuJIT 的新的实时 (JIT) 编译器会出现此问题。此编译器使用不同于传统的 JIT64 编译器的优化。没有为新的 JIT 编译器优化热代码路径上的编码中XmlDictionaryWriter的字符串的方法和生成的本机指令运行得更慢的编码时间较长。当 SOAP 消息中包含大量的字符串进行编码时,此速度较慢的代码更频繁地使用并可能会影响编码时间。
解决方案
若要解决此问题工作配置禁止使用 ngen System.Runtime.Serialization.dll 程序集并使用旧式的 JIT 引擎的应用程序。为此可以使用以下方法之一:
  • 设置以下环境变量:

    COMPLUS_useLegacyJit = 1
    COMPLUS_DisableNativeImageLoadList=System.Runtime.Serialization
  • 在注册表中创建下列子项之一:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\。NETFramework
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\。NETFramework

    然后添加以下值:
    • 密钥名称: useLegacyJit
      类型: REG_WORD
      值: 1
    • 密钥名称: DisableNativeImageLoadList
      类型: REG_SZ
      值: System.Runtime.Serialization
  • 将以下文本添加到<app>。.exe.config 文件。如果不存在创建章节。</app>
    <configuration>         <runtime>              <useLegacyJit enabled="1">             <disableNativeImageLoad>                 <assemblyIdentity name="System.Runtime.Serialization" />             </disableNativeImageLoad>          </runtime>     </configuration>


有关.NET Framework 4.6 中的已知问题 对于.NET Framework 4.6 的已知的问题.
更多信息
有关相关产品版本控制的更改并在.NET Framework 4.6 及其效果在.NET Framework 4.6 中应用程序兼容性.

警告:本文已自动翻译

属性

文章 ID:3076436 - 上次审阅时间:07/20/2015 14:18:00 - 修订版本: 1.0

Microsoft .NET Framework 4.6

  • kbsurveynew kbexpertiseadvanced kbtshoot kbmt KB3076436 KbMtzh
反馈