Simptomi
Nakon što instalirate u julu 2018 .NET Framework bezbednosti i kvaliteta zbirnih koje se odnose na .NET Framework 4.6, 4.6.1, 4.6.2, 4,7, 4.7.1 i 4.7.2 na Windows 7 Service Pack 1 (SP1), Windows Server 2008 R2 SP1 ili Windows Server 2008 SP2, primetite greške u za .NET Okvirni aplikacija koja ispunjava sledeće kriterijume:
-
Aplikacija koristi instance u kojima transakcije protok je omogućeno usvajanjem TransactionScopeAsyncFlowOption.Enabled da je Konstruktor klase System.Transaction.TransactionScope .
-
Aplikacija čini jedan ili više daljinski pozivi dok je jedan od ovih opsega transakcija aktivna. U ovom slučaju, udaljeni poziv je svaki poziv koji putuje kroz transparentan proxy pre nego stigne objekat servera. Primeri daljinski pozivi uključuju pozive da drugih aplikacija domena i pozive upućene preko daljinskog upravljanja kanala, kao što je klijent kanale koji su definisani u prostori u System.Runtime.Remoting.Channels imena.
-
Posle udaljene poziva, System.Transactions.Transaction.Current vraća vrednost "null" umesto vrednosti koje je vraćen pre poziva udaljene.
Rešenje
Da biste rešili ovaj problem, pokušajte neku od sljedećih metoda:
-
Za svaku transakciju opsegom omogućava protok transakcije, promenite aplikaciju da se uverite se da nema daljinski pozivi doći do bilo gde u kodu koji se pokreće dok je obim transakcija aktivna. Kada utvrdite da li je opseg transakcije sadrži pozive udaljene, razmotrite sledeća uputstva:
-
Poziv za statički metod nikad nije poziv udaljene.
-
Poziva da je instanca metod za ciljni objekat, poziv je udaljena samo ako ciljnog objekta je transparentan proxy server.
-
Poziva da se Konstruktor, poziv je udaljena samo ako je izgrađen objekat transparentan proxy server.
NapomenaKoristite metod System.Runtime.Remoting.RemotingServices.IsTransparentProxy da biste proverili da li je objekat je transparentan proxy.
-
-
Onemogući transakcije protok uklanjanjem argument TransactionScopeAsyncFlowOption.Enabled Konstruktor.
Upozorenje
Ovo rešenje je da izazovu druge greške ako bilo koji „čekaju” operacija izvrši dok je obim transakcija aktivna.
-
Svojstvo Transaction.Current je nije automatski registrovana na udaljeni poziv. To mora biti usvojen kao parametar. Ako udaljeni poziv nije prošla transakcija kao parametar i ne čini se javi klijentu tokom udaljeni poziv, možete da kreirate udaljeni poziv unutar novi TransactionScope objekat koji koristi TransactionScopeOptions.Suppress opcija. Unutar ovo potisne opsega transakcije, svojstvo Transaction.Current ima vrednost "null".
Status
Smo svesni ovaj problem i trenutno rade na rezoluciji.