Udostępnij za pośrednictwem


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

Nazwa recoveryInformation jest niepoprawna.

-lub-

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

-lub-

RecoveryInformationnie jest rozpoznawany przez .System.Transactions

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

Właściwość nie jest zgodna resourceManagerIdentifier z zawartością określonych informacji odzyskiwania w pliku recoveryInformation.

Uwagi

Ważne

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 (Weryfikowanie wszystkich danych wejściowych).

Menedżer zasobów ułatwia rozwiązanie trwałych rejestracji w transakcji przez reenlisting uczestnika transakcji po 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 pierwotnie wywoływania EnlistDurable metody podczas rejestracji lub TransactionException jest zgłaszany.

Gdy uczestnik jest ponownie wymieniony przy użyciu tej metody, metody IEnlistmentNotification fazy 2, które 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 zostanie uruchomiony ponownie z powodu awarii. Ponadto należy tylko reenlist rozwiązane transakcje zarejestrowane przez Menedżera zasobów w fazie przygotowania początkowego dwufazowego zatwierdzania. Każda próba wywołania tej metody w czasie nieprawidłowy może utworzyć błędnych wyników.

Jeśli menedżer transakcji zakończy się niepowodzeniem, a menedżer zasobów wykona odzyskiwanie tylko chwilę po wywołaniu Prepared metody 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