public byte[] Promote()
{
Trace("NonMSDTCPromoterEnlistment.Promote");
this.Promoted = true;
_distributedTxId = Guid.NewGuid();
if (_failPromote)
{
Trace("NonMSDTCPromoterEnlistment.Promote - Failing based on configuration");
throw new ApplicationException("Failing promotion based on configuration");
}
// invoke this.enlistedTransaction.SetDistributedTransactionIdentifier(this, this.promoterType); via reflection
if (_incorrectNotificationObjectToSetDistributedTransactionId)
{
NonMSDTCPromoterEnlistment incorrectNotificationObject = new NonMSDTCPromoterEnlistment(_promoterType, _promotedToken, _completionEvent);
try
{
SetDistributedTransactionId(incorrectNotificationObject, _enlistedTransaction, _distributedTxId);
throw new ApplicationException("SetDistributedTransactionIdentifier did not throw the expected InvalidOperationException");
}
catch (TargetInvocationException ex)
{
if (!(ex.InnerException is InvalidOperationException))
{
throw new ApplicationException("SetDistributedTransactionIdentifier did not throw the expected InvalidOperationException");
}
}
}
else
{
SetDistributedTransactionId(this, _enlistedTransaction, _distributedTxId);
}
return _promotedToken;
}