Я пытался реализовать пример для DependentTransaction в https://docs.microsoft.com/en-us/dotnet/api/system.transactions.dependenttransaction?view=netframework-4.8
Разница для меня заключается в том, что я передаю зависимую транзакцию в API и не могу восстановить Полученный объект возвращается в DependentTransaction.
Итак, вот код:
using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
{
// code that saves an entity in the database within the above scope
// code that creates an audit trail object
object dependantTxn = Transaction.Current.DependentClone(DependentCloneOption.BlockCommitUntilComplete);
AuditTrailParamterModel model = new AuditTrailParamterModel()
{
AuditTrail = auditTrail,
transaction = dependantTxn
}
await client.PostAsJsonAsync("http//localhost/auditrail/api/InsertAuditTrail", model);
}
На приемном конце здесь есть часть кода (как в примере):
[Route("api/InsertAuditTrail")]<br/>
[HttpPost]<br/>
public async Task<IHttpActionResult> InsertAuditTrail(AuditTrailParamterModel model)
{
// Create a DependentTransaction from the object passed to API
DependentTransaction dTx = (DependentTransaction)model.transation;
// more code ....
}
Проблема в том, что model.transation заполняется следующим текстом:
{{"OletxTransactionPropagationToken":"AQAAAAMAAADYbd5tQr4RbyxnSSp5UW2AAAQAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADk4NGNmZDU1LTQyMmUtNDI4MC04NDk3LTg2NjM3ODE4NjZjNQAAMAAHAAAAZM1kzSAAAABRTi0wMDMwABAAAABRAE4ALQAwADAAMwAwAAAAAAAAAAAAAAAOAAAAdGlwOi8vUU4tMDAzMC8AAA=="}}
Строка:
DependentTransaction dTx = (DependentTransaction)model.transation;
падает.
Исключение составляет
Невозможно привести объект типа 'Newtonsoft. Json .Linq.JObject' к типу 'System.Transactions.DependentTransaction'.
Тип DependentTransaction наследуется от Транзакция и члены следующие:
public static Transaction Current { get; set; }
public IsolationLevel IsolationLevel { get; }
public TransactionInformation TransactionInformation { get; }
public Guid PromoterType { get; }
, а TransactionInformation имеет следующие члены:
public string LocalIdentifier { get; }
public Guid DistributedIdentifier { get; }
public DateTime CreationTime { get; }
public TransactionStatus Status { get; }
Я также попытался проверить, могу ли я использовать декодер из формата Base64, чтобы проверить, эта длинная строка может быть ча в транзакции, но это не может быть сделано.
Я часами искал онлайн, чтобы найти решение, и не могу ничего найти.
Может кто-нибудь помочь? Я был бы очень признателен.