Se connecter avec Microsoft
S'identifier ou créer un compte.
Bonjour,
Sélectionnez un autre compte.
Vous avez plusieurs comptes
Choisissez le compte avec lequel vous voulez vous connecter.

Symptômes

Après avoir installé les correctifs cumulatifs de sécurité et de qualité de juillet 2018 A pour .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1 et 4.7.2 sous Windows 7 Service Pack 1 (SP1), Windows Server 2008 R2 SP1 ou Windows Server 2008 SP2, vous constatez des erreurs dans une application .NET Framework qui répond aux critères suivants :

  • L’application utilise des instances de la classe System.Transaction.TransactionScope dans laquelle le flux de transactions est activé en transmettant TransactionScopeAsyncFlowOption.Enabled au constructeur.

  • L’application effectue un ou plusieurs appels distants pendant que l’une de ces étendues de transaction est active. Dans ce cas, un appel distant est un appel qui transite par un proxy transparent avant d’atteindre l’objet serveur. Les appels vers d’autres domaines d’application et les appels effectués par le biais de canaux d’accès distant, comme les canaux clients définis dans les espaces de noms System.Runtime.Remoting.Channels, constituent des exemples d’appels distants.

  • Après l’appel distant, System.Transactions.Transaction.Current renvoie une valeur NULL au lieu de la valeur renvoyée avant l’appel distant.

Solution de contournement

Pour contourner ce problème, essayez l’une des méthodes suivantes :

  • Pour chaque étendue de transaction qui permet le flux de transactions, modifiez l’application pour vous assurer qu’aucun appel distant ne se produit dans le cadre exécuté pendant que l’étendue de transaction est active. Lorsque vous déterminez si une étendue de transaction contient des appels distants, tenez compte des points suivants :

    • Un appel d’une méthode statique n’est jamais un appel distant.

    • Dans le cas d’un appel d’une méthode d’instance sur un objet cible, l’appel n’est distant que si l’objet cible est un proxy transparent.

    • Dans le cas d’un appel d’un constructeur, l’appel n’est distant que si l’objet construit est un proxy transparent.

    Remarque Dans tous les cas, vous pouvez utiliser la méthode System.Runtime.Remoting.RemotingServices.IsTransparentProxy pour vérifier si un objet est un proxy transparent.

  • Désactivez le flux de transactions en supprimant l’argument de constructeur TransactionScopeAsyncFlowOption.Enabled.

    Avertissement

    Cette solution de contournement est susceptible de provoquer d’autres erreurs en cas d’exécution d’opérations « await » pendant que l’étendue de transaction est active.

  • La propriété Transaction.Current n’est pas automatiquement sérialisée vers l’appel distant. Elle doit être transmise en tant que paramètre. Si l’appel distant ne transmet pas la transaction en tant que paramètre et n’effectue pas de rappel vers le client pendant l’appel distant, vous pouvez créer l’appel distant dans un nouvel objet TransactionScope qui utilise l’option TransactionScopeOptions.Suppress. Dans cette étude de transaction « suppress », la propriété Transaction.Current a la valeur NULL.

Statut

Nous avons connaissance de ce problème et essayons de trouver une solution.

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.

Ces informations vous ont-elles été utiles ?

Dans quelle mesure êtes-vous satisfait(e) de la qualité de la langue ?
Qu’est-ce qui a affecté votre expérience ?
En cliquant sur Envoyer, vos commentaires seront utilisés pour améliorer les produits et services de Microsoft. Votre administrateur informatique sera en mesure de collecter ces données. Déclaration de confidentialité.

Nous vous remercions de vos commentaires.

×