Problem z wydajnością podczas wysyłania wiadomości XML protokołu SOAP w 4.6.NET Framework za pomocą usług WCF

WAŻNE: Ten artykuł został przetłumaczony przy użyciu oprogramowania firmy Microsoft do tłumaczenia maszynowego i może być poprawiony przy użyciu technologii Community Translation Framework (CTF). Firma Microsoft udostępnia artykuły tłumaczone maszynowo, poprawione przez społeczność, a także tłumaczone przez tłumaczy profesjonalnych, aby zapewnić dostęp do wszystkich artykułów w bazie wiedzy w wielu językach. Artykuły tłumaczone maszynowo i poprawione mogą zawierać błędy pisowni, składniowe i gramatyczne. Firma Microsoft nie ponosi odpowiedzialności za żadne nieścisłości, błędy ani szkody spowodowane przez niepoprawne tłumaczenia zawartości ani przez korzystanie z niej przez klientów. Więcej o strukturze CTF: http://support.microsoft.com/gp/machine-translation-corrections/pl.

Anglojęzyczna wersja tego artykułu to: 3076436
Symptomy
Założono, że przeprowadzono aktualizację do programu Microsoft.NET Framework 4.6 na komputerze. Korzystając z aplikacji, która używa Framework(WCF) komunikat systemu Windows do wysyłania wiadomości XML protokołu SOAP, kodowanie może trwać nieco dłużej. W niektórych przypadkach może spowodować zmianę kursu, w której aplikacja serwera może przetwarzać żądania.
Przyczyna
Ten problem występuje z powodu nowy kompilator JIT (JIT) o nazwie RyuJIT. To kompilator używa różne opcje optymalizacji niż starsze kompilatora JIT64. Metoda na ścieżce kodu gorący kodowania ciągów wobiektu XmlDictionaryWriter nie jest zoptymalizowana pod kątem nowy kompilator JIT i generowane instrukcje macierzystego działają wolniej i kodowanie trwa dłużej. Gdy wiadomości SOAP zawiera dużą liczbę ciągów, które mają być zakodowane, ten kod wolniej jest częściej używany i może mieć wpływ na czas kodowania.
Rozwiązanie
Aby obejść ten problem, należy skonfigurować aplikację wyłączyć używanie ngen dla zestawu System.Runtime.Serialization.dll i używać starszych silnika JIT. Aby to zrobić, użyj jednej z następujących metod:
  • Ustaw następujące zmienne środowiskowe:

    COMPLUS_useLegacyJit = 1
    COMPLUS_DisableNativeImageLoadList=system.Runtime.serialization
  • W rejestrze należy utworzyć jeden z następujących podkluczy:

    Hkey_local_machinesoftwaremicrosoft\\\. NETFramework
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\. NETFramework

    Następnie dodaj następujące wartości:
    • Nazwa klucza: useLegacyJit
      Typ: REG_WORD
      Wartości: 1
    • Nazwa klucza: DisableNativeImageLoadList
      Typ: REG_SZ
      Wartość: System.Runtime.Serialization
  • Dodaj następujący tekst do <app>. exe.config pliku. Tworzenie sekcji wskazane, jeśli jeszcze nie istnieje.</app>
    <configuration>         <runtime>              <useLegacyJit enabled="1">             <disableNativeImageLoad>                 <assemblyIdentity name="System.Runtime.Serialization" />             </disableNativeImageLoad>          </runtime>     </configuration>


Aby uzyskać więcej informacji dotyczących znanych problemów z 4.6.NET Framework Zobacz Znane problemy dotyczące 4.6.NET Framework.
Więcej informacji
Aby uzyskać więcej informacji na temat zmiany wersji produktu i ich wpływu na 4.6.NET Framework ZobaczZgodność aplikacji w.NET Framework 4.6.

Właściwości

Identyfikator artykułu: 3076436 — ostatni przegląd: 07/22/2015 17:56:00 — zmiana: 1.0

Microsoft .NET Framework 4.6

  • kbsurveynew kbexpertiseadvanced kbtshoot kbmt KB3076436 KbMtpl
Opinia