Μετάβαση στο κύριο περιεχόμενο
Υποστήριξη
Είσοδος με Microsoft
Είσοδος ή δημιουργία λογαριασμού.
Γεια σας,
Επιλέξτε διαφορετικό λογαριασμό.
Έχετε πολλούς λογαριασμούς
Επιλέξτε τον λογαριασμό με τον οποίο θέλετε να εισέλθετε.

Συμπτώματα

Μετά την εγκατάσταση του Ιουλίου 2018 ασφαλείας του .NET Framework και οι συλλογές ενημερωμένων εκδόσεων ποιότητας που ισχύουν για το .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, βλέπε 4.7.1 και 4.7.2 σε Windows 7 Service Pack 1 (SP1), Windows Server 2008 R2 SP1 ή 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.

Κατάσταση

Έχουμε είναι γνωρίζει αυτό το ζήτημα και εργάζεται σε μια ανάλυση.

Χρειάζεστε περισσότερη βοήθεια;

Θέλετε περισσότερες επιλογές;

Εξερευνήστε τα πλεονεκτήματα της συνδρομής, περιηγηθείτε σε εκπαιδευτικά σεμινάρια, μάθετε πώς μπορείτε να προστατεύσετε τη συσκευή σας και πολλά άλλα.

Οι κοινότητες σάς βοηθούν να κάνετε και να απαντάτε σε ερωτήσεις, να δίνετε σχόλια και να ακούτε από ειδικούς με πλούσια γνώση.

Σας βοήθησαν αυτές οι πληροφορίες;

Πόσο ικανοποιημένοι είστε με τη γλωσσική ποιότητα;
Τι επηρέασε την εμπειρία σας;
Πατώντας "Υποβολή" τα σχόλια σας θα χρησιμοποιηθούν για τη βελτίωση των προϊόντων και των υπηρεσιών της Microsoft. Ο διαχειριστής IT θα έχει τη δυνατότητα να συλλέξει αυτά τα δεδομένα. Δήλωση προστασίας προσωπικών δεδομένων.

Σας ευχαριστούμε για τα σχόλιά σας!

×