Ознаки
Після інсталяції липня-2018 .NET Framework безпеки і якість пакети, які стосуються .NET Framework, 4.6, 4.6.1 4.6.2, 4.7, 4.7.1 та 4.7.2, пакет оновлень 1 (SP1) для ОС Windows 7, Windows Server 2008 R2 пакетом оновлень 1 або Windows Server 2008 SP2, ви помітите помилки в .NET Бази-застосунок, який відповідає за таких умов:
-
Застосування використовує оператор екземплярів System.Transaction.TransactionScope клас транзакцій передавання увімкнено, передаючи TransactionScopeAsyncFlowOption.Enabled Конструктор.
-
Застосунок надає один або кілька віддалених викликів, поки один із цих областей, транзакцій активним. У цьому випадку віддаленого виклику – це виклик, який проходить через прозорий проксі-сервер, перш ніж вона потрапить об'єкт сервера. Віддалених викликів приклади інших доменів і дзвінків, зроблені через віддалений-канали, канали клієнта, визначені на System.Runtime.Remoting.Channels простори, наприклад.
-
, Після віддаленого виклику System.Transactions.Transaction.Current , повертає значення null замість значення, який повернув до віддаленого виклику.
Спосіб вирішення
Щоб вирішити цю проблему, спробуйте будь-який із таких способів:
-
Для кожного обсяг транзакцій, що дозволяє транзакцій передавання змінити програми, щоб переконатися, що не віддалених викликів виникати будь-якому місці в коді, який запускається під час операції обсяг активний. Під час визначення, чи транзакції містить будь-якого віддаленого виклику, розглянути наведених нижче вказівок.
-
Виклик статичний метод буває віддаленого виклику.
-
Виклик на цільовий об'єкт методи екземпляра виклик є віддаленого, лише якщо цільовий об'єкт прозорий проксі-сервер.
-
Виклик конструктора виклик є віддаленого, лише якщо побудована об'єкт прозорий проксі-сервер.
Примітка.Ви завжди використовувати метод System.Runtime.Remoting.RemotingServices.IsTransparentProxy , щоб перевірити, чи об'єкт прозорий проксі.
-
-
Вимкніть транзакцій потоків, видалення TransactionScopeAsyncFlowOption.Enabled конструктор аргумент.
Попередження!
Цей спосіб, це може призвести до інших помилок, якщо будь-які операції з "чекають" для виконання під час операції обсяг активних.
-
Властивість Transaction.Current не автоматично серіалізованной віддалений виклик. Потрібно пропустити як параметр. Якщо віддалений виклик не проходить транзакції, як параметр не має зворотного виклику клієнта під час віддаленого виклику, можна створити віддалений виклик всередині TransactionScope новий об'єкт, який використовує, TransactionScopeOptions.Suppress параметр. Всередині, заборона транзакції, властивість Transaction.Current , має значення null.
Стан
Ми знаємо про цю проблему та працюють над спосіб вирішення проблеми.