Vấn đề hiệu suất khi bạn sử dụng WCF gửi thông báo XML SOAP Khuôn khổ .NET 4.6

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 3076436
Triệu chứng
Giả sử rằng bạn đã nâng cấp lên Microsoft Khuôn khổ .NET 4.6 trên máy tính của bạn. Khi bạn sử dụng ứng dụng sử dụng Windows Communication Framework(WCF) gửi tin thư thoại XML SOAP, mã hoá có thể mất một chút lâu hơn. Trong một số trường hợp, điều này có thể ảnh hưởng đến mức độ ứng dụng máy chủ có thể xử lý yêu cầu.
Nguyên nhân
Sự cố này xảy ra vì một biên dịch Just-In-Time (JIT) mới có tên RyuJIT. Biên soạn này sử dụng tối ưu hóa khác với trình biên dịch JIT64 hợp lệ. Phương pháp trên đường nóng mã mã hóa chuỗi trongXmlDictionaryWriter không tối ưu hoá cho biên soạn JIT mới tạo ra hướng dẫn riêng chạy chậm hơn và mã hoá mất nhiều thời gian. Khi thư SOAP chứa nhiều chuỗi được mã hoá, mã chậm này được sử dụng thường xuyên hơn và có thể ảnh hưởng đến thời gian mã hóa.
Giải pháp
Để khắc phục sự cố này, cấu hình ứng dụng vô hiệu hoá việc ngen System.Runtime.Serialization.dll lấy và sử dụng công cụ JIT hợp lệ. Để thực hiện việc này, sử dụng một trong những phương pháp sau:
  • Thiết lập các biến môi trường sau:

    COMPLUS_useLegacyJit = 1
    COMPLUS_DisableNativeImageLoadList=System.Runtime.serialization
  • Trong sổ kiểm nhập, tạo một trong những khoá con sau:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\. NETFramework
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\. NETFramework

    Sau đó, thêm giá trị sau:
    • Tên khoá: useLegacyJit
      Loại: REG_WORD
      Giá trị: 1
    • Tên khoá: DisableNativeImageLoadList
      Loại: REG_SZ
      Giá trị: System.Runtime.Serialization
  • Thêm văn bản sau vào <app>. exe.config tệp. Tạo mục chỉ dẫn nếu họ đã tồn tại.</app>
    <configuration>         <runtime>              <useLegacyJit enabled="1">             <disableNativeImageLoad>                 <assemblyIdentity name="System.Runtime.Serialization" />             </disableNativeImageLoad>          </runtime>     </configuration>


Để biết thêm thông tin về các vấn đề trong Khuôn khổ .NET 4.6, hãy xem Vấn đề đã biết cho Khuôn khổ .NET 4.6.
Thông tin thêm
Để biết thêm thông tin về thay đổi phiên bản của sản phẩm và các hiệu ứng trong Khuôn khổ .NET 4.6, hãy xemtương hợp về sau ứng dụng trong Khuôn khổ .NET 4.6.

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 3076436 - Xem lại Lần cuối: 07/20/2015 14:19:00 - Bản sửa đổi: 1.0

Microsoft .NET Framework 4.6

  • kbsurveynew kbexpertiseadvanced kbtshoot kbmt KB3076436 KbMtvi
Phản hồi