Transactions 工作流基础与DTC事务回滚错误行为 我正在测试工作流基础4.5中的接收事务范围,我认为它有问题!p>
查看当我通过显式roolback返回事务时:Transactions 工作流基础与DTC事务回滚错误行为 我正在测试工作流基础4.5中的接收事务范围,我认为它有问题!p>,transactions,workflow-foundation-4,transactionscope,msdtc,Transactions,Workflow Foundation 4,Transactionscope,Msdtc,查看当我通过显式roolback返回事务时: using (TransactionScope s = new TransactionScope()) { using (ServiceReference1.ServiceClient cli = new ServiceReference1.ServiceClient()) { Transaction t = Transaction.Current; cli.Ge
using (TransactionScope s = new TransactionScope())
{
using (ServiceReference1.ServiceClient cli = new ServiceReference1.ServiceClient())
{
Transaction t = Transaction.Current;
cli.GetData(new ServiceReference1.GetData() { data = 10, ID = id });
t.Rollback();
}
}
或者通过在transactionScope中引发异常:
using (TransactionScope s = new TransactionScope())
{
using (ServiceReference1.ServiceClient cli = new ServiceReference1.ServiceClient())
{
cli.GetData(new ServiceReference1.GetData() { data = 10, ID = id });
throw new Exception("Error!");
}
}
我希望工作流也能回滚!换句话说,我希望接收的“GetData”仍然有效!但事实并非如此。工作流已执行,GetData不再是有效的
在“GetData”之后还有其他“Receive”以保证工作流不会进入“completed”状态
我确信我的交易正在流入工作流,因为在工作流中,我有一个活动返回我交易ID(当然与应用程序上的交易ID匹配)
有人知道发生了什么事吗?我错过了什么
进一步说明:我的计算机中正在运行所有内容(包括Sql Server 2012上的备份存储)
DTC已启用工作流本身不是事务性资源。因此,虽然您所做的任何数据库更新都可能会回滚,但工作流本身的状态不会重置。但我的实例本身是持久的!如果我手动查询数据库,它就会显示出来!即使在AbortInstanceOnTransactionFailure=true时,行为是否相同?(TransactiveReceiveScope的名称)