現象
コンピューターに Microsoft.NET Framework 4.6 にアップグレードすることを想定しています。XML SOAP メッセージを送信する Windows 通信フレームワーク (WCF) を使用するアプリケーションを使用して、エンコードは時間が長くなります。場合によっては、サーバー アプリケーションが要求を処理する速度に影響を与えるこの可能性があります。
原因
この問題は、RyuJIT という新しい Just-In-Time (JIT) コンパイラが原因で発生します。このコンパイラでは、従来の JIT64 コンパイラよりもさまざまな最適化を使用します。ホット コード パスでXmlDictionaryWriter内の文字列をエンコードするためのメソッドが新しい JIT コンパイラの最適化されていない、生成されたネイティブな命令の実行速度が低下し、エンコード時間がかかります。SOAP メッセージのエンコードする文字列の数が多い場合は、この低速のコードがより頻繁に使用され、エンコード時間に影響を与える可能性があります。
解決策
この問題を回避するには、System.Runtime.Serialization.dll アセンブリの ngen の使用を無効にして、従来の 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 ファイルです。存在しない場合は、指定されたセクションを作成します。<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 におけるアプリケーションの互換性を参照してください。