C# Wcf交易

C# Wcf交易,c#,.net,wcf,C#,.net,Wcf,有没有办法在wcf操作中知道事务已提交 好的,第二次尝试更具体一些 我得到了一个WCF服务,它的操作允许事务流 现在,当客户机调用我的wcf服务时,它可以有一个事务。但我的服务也对客户机上的交易成功这一事实感兴趣。因为在我的wcf服务水平上,如果一切顺利。它还有其他事情要做,但只有在所有事务都已提交的情况下 有什么我可以订阅的活动吗?这取决于服务本身以及您处理事务的方式。如果您正在参与,那么如果对客户机的调用毫无例外地成功,您可以假定事务已经发生 但是,如果这是在另一个事务的上下文中,那么在包含

有没有办法在wcf操作中知道事务已提交

好的,第二次尝试更具体一些

我得到了一个WCF服务,它的操作允许事务流

现在,当客户机调用我的wcf服务时,它可以有一个事务。但我的服务也对客户机上的交易成功这一事实感兴趣。因为在我的wcf服务水平上,如果一切顺利。它还有其他事情要做,但只有在所有事务都已提交的情况下


有什么我可以订阅的活动吗?

这取决于服务本身以及您处理事务的方式。如果您正在参与,那么如果对客户机的调用毫无例外地成功,您可以假定事务已经发生

但是,如果这是在另一个事务的上下文中,那么在包含该事务的事务完成之前,您无法确定该事务是否已通过

即使您正在使用,如果您已启用服务以使用事务,您仍然必须考虑包含的事务(如果有)


为了获得更完整的答案,您必须提供更多有关事务与呼叫的位置的信息。

在允许TransactionFlow的操作中,尝试使用上面的操作行为属性:

[OperationBehavior(TransactionScopeRequired=true)]
如果一个事务从客户端流出,那么服务将使用它

bool isTransactionComplete = true;
try
{
    using (TransactionScope trScope = new TransactionScope(TransactionScopeOption.Required))
    {
        //some work
        trScope.Complete();
    }
}
catch (TransactionAbortedException e)
{
    //Transaction holder got exception from some service
    //and canceled transaction
    isTransactionComplete = false;
}
catch//other exception
{
    isTransactionComplete = false;
    throw;
}

if (isTransactionComplete)
{
    //Success 
}
正如casperOne所写,这取决于设置。但您应该了解复杂的事务,如

1) 一个服务实例的会话服务和并发事务


2) 交易内部交易

PDIDY我的人!你厌倦了所有的唱歌和其他东西,决定制作一个WCF服务?尊敬!你能说得更具体一点吗?你的问题甚至都不押韵。有没有类似的活动我可以订阅,以获得交易已提交的通知?