Conectați-vă cu Microsoft
Conectați-vă sau creați un cont
Salut,
Selectați un alt cont.
Aveți mai multe conturi
Alegeți contul cu care doriți să vă conectați.

Simptome

După ce instalați iulie 2018 .NET Framework securitate și Seturile de calitate care se aplică pentru .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1 și 4.7.2 pe Windows 7 Service Pack 1 (SP1), Windows Server 2008 R2 SP1 sau Windows Server 2008 SP2, observați erori într-un .NET Cadru de aplicații care să întrunească următoarele criterii:

  • Aplicația utilizează instanțe ale clasei System.Transaction.TransactionScope în care fluxul de tranzacții este activat trecând TransactionScopeAsyncFlowOption.Enabled la constructor.

  • Aplicația face unul sau mai multe apeluri de la distanță în timp ce unul dintre aceste tranzacții domeniile este activă. În acest caz, un apel la distanță este orice apel care călătoresc prin intermediul unui proxy transparent înainte de a ajunge pe obiectul server. Exemple de la distanță apeluri includ apelurile către alte domenii de aplicație și apelurile efectuate prin canale la distanță, cum ar fi canalele client definite în System.Runtime.Remoting.Channels spaţii de nume.

  • După apel la distanță, System.Transactions.Transaction.Current returnează o valoare nulă în loc de valoarea care a fost returnată înainte de apel la distanță.

Soluție de evitare

Pentru a rezolva această problemă, încercați oricare dintre următoarele metode:

  • Pentru fiecare domeniu de tranzacții care permite fluxul de tranzacții, modificați aplicația pentru a vă asigura că nu apeluri remote apărea oriunde în cod care se execută în timp ce domeniul de tranzacții este activă. Atunci când se determină dacă un domeniu de tranzacții conține apeluri de la distanță, luați în considerare următoarele indicații:

    • Un apel la o metodă statică nu este un apel la distanță.

    • Pentru un apel la o instanță metodă un obiect țintă, apelul este la distanță de numai dacă obiectul țintă este un proxy transparent.

    • Pentru un apel la un constructor, apelul este la distanță de numai dacă obiectul construit este un proxy transparent.

    NotăÎntotdeauna utilizați metoda System.Runtime.Remoting.RemotingServices.IsTransparentProxy pentru a verifica dacă un obiect este un proxy transparent.

  • Dezactivați tranzacții flux prin eliminarea argumentul TransactionScopeAsyncFlowOption.Enabled constructor. 

    Avertisment

    Această soluție este probabil să provoace alte erori dacă nicio operațiune "aştepte" executare în timp ce domeniul de tranzacții este activă.

  • Proprietatea Transaction.Current nu este publicată automat la apel la distanță. Acesta trebuie să fi trecut ca un parametru. Dacă apel la distanță nu trece de tranzacții ca un parametru și face un apel la client în timpul apelurilor la distanță, aveți posibilitatea să creați apelurilor la distanță în interiorul unui obiect nou de TransactionScope care utilizează TransactionScopeOptions.Suppress . În interiorul aceasta suprima domeniul de tranzacții, proprietatea Transaction.Current are o valoare nulă.

Stare

Cunoaștem această problemă și lucrează în prezent pe o rezolvare.

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.

Au fost utile aceste informații?

Cât de mulțumit sunteți de calitatea limbajului?
Ce v-a afectat experiența?
Apăsând pe Trimitere, feedbackul dvs. va fi utilizat pentru a îmbunătăți produsele și serviciile Microsoft. Administratorul dvs. IT va avea posibilitatea să colecteze aceste date. Angajamentul de respectare a confidențialității.

Vă mulțumim pentru feedback!

×