Język

TransactionManager.Reenlist(Guid, Byte[], IEnlistmentNotification) Metoda

Definicja

Ponownie zapisuje trwałego uczestnika w transakcji.

public:
 static System::Transactions::Enlistment ^ Reenlist(Guid resourceManagerIdentifier, cli::array <System::Byte> ^ recoveryInformation, System::Transactions::IEnlistmentNotification ^ enlistmentNotification);
public static System.Transactions.Enlistment Reenlist(Guid resourceManagerIdentifier, byte[] recoveryInformation, System.Transactions.IEnlistmentNotification enlistmentNotification);
static member Reenlist : Guid * byte[] * System.Transactions.IEnlistmentNotification -> System.Transactions.Enlistment
Public Shared Function Reenlist (resourceManagerIdentifier As Guid, recoveryInformation As Byte(), enlistmentNotification As IEnlistmentNotification) As Enlistment

Parametry

resourceManagerIdentifier
Guid

Element Guid , który jednoznacznie identyfikuje menedżera zasobów.

recoveryInformation
Byte[]

Zawiera dodatkowe informacje o odzyskiwaniu.

enlistmentNotification
IEnlistmentNotification

Obiekt zasobu, który implementuje odbieranie IEnlistmentNotification powiadomień.

Zwraca

Element Enlistment opisujący rejestrację.

Wyjątki

recoveryInformation jest nieprawidłowy.

— lub —

Informacje menedżera transakcji w programie recoveryInformation nie są zgodne ze skonfigurowanym menedżerem transakcji.

— lub —

recoveryInformation nie jest rozpoznawany przez System.Transactions.

RecoveryComplete(Guid) został już wywołany dla określonego resourceManagerIdentifierelementu . Ponowne rejestrowanie jest odrzucane.

Element resourceManagerIdentifier nie jest zgodny z zawartością określonych informacji odzyskiwania w pliku recoveryInformation.

Uwagi

Ważna

Wywoływanie tej metody z niezaufanymi danymi jest zagrożeniem bezpieczeństwa. Wywołaj tę metodę tylko z zaufanymi danymi. Aby uzyskać więcej informacji, zobacz Validate All Inputs.

Menedżer zasobów ułatwia rozwiązywanie trwałych zgłoszeń w transakcji przez ponowne zapisanie uczestnika transakcji w przypadku awarii zasobu.

Parametr resourceManagerIdentifier służy do spójnego oznaczania uczestnika transakcji w przypadku awarii zasobu. Podczas wywoływania Reenlist metody menedżer zasobów musi podać to samo, resourceManagerIdentifier co użyto podczas pierwotnego EnlistDurable wywołania metody podczas rejestracji lub TransactionException jest zgłaszany.

Gdy uczestnik zostanie ponownie wymieniony przy użyciu tej metody, metody IEnlistmentNotification fazy 2 odpowiadają wynikowi transakcji (czyli , CommitRollback, lub InDoubt ) są wywoływane odpowiednio.

Po pomyślnym ponownym na liście uczestników należy wywołać metodę RecoveryComplete w celu ukończenia odzyskiwania.

Tę metodę należy wywołać tylko wtedy, gdy menedżer zasobów ponownie uruchomi się po awarii. Ponadto należy tylko ponownie zarejestrować nierozstrzygnięte transakcje zarejestrowane przez menedżera zasobów w początkowej fazie przygotowawczej dwufazowego zatwierdzenia. Każda próba wywołania tej metody w nieprawidłowych momentach może spowodować błędne wyniki.

Jeśli menedżer transakcji ulegnie awarii, a menedżer zasobów wykona odzyskiwanie tylko krótki czas po wywołaniu Prepared metody na liście w fazie 1 protokołu zatwierdzania Two-Phase, menedżer zasobów może otrzymać InDoubt wywołanie zwrotne lub Rollback .

Aby uzyskać więcej informacji na temat odzyskiwania, zobacz Wykonywanie odzyskiwania.

Dotyczy