【问题标题】:C# WCT ReleaseServiceInstanceOnTransactionCompleteC# WCT ReleaseServiceInstanceOnTransactionComplete
【发布时间】:2012-04-25 10:28:39
【问题描述】:

我确定我对这些属性的理解都错了。

  1. ReleaseServiceInstanceOnTransactionComplete - 据我了解-在您的事务完成\abord 后,处置您在客户端中初始化的服务实例。

2.TransactionAutoComplete- 据我了解-在操作结束后处置您在客户端中初始化的服务实例。

我的英文不是很好,所以看完每一篇文章后,我仍然有我听不懂的平静。

感谢您的宝贵时间。

编辑 1:

你能用简单的英语向我解释一下InstanceContext的目的是什么吗? 我读过这篇文章:http://www.danrigsby.com/blog/index.php/2008/05/23/understanding-instancecontext-in-wcf/ 还是没听懂。

【问题讨论】:

    标签: c# wcf transactions


    【解决方案1】:

    ReleaseServiceInstanceOnTransactionComplete 在事务完成或中止时真正处置您的服务实例。它默认设置为 true。例如,如果您使用 PerSession 实例化创建服务,您可能希望将其设置为 false 以确保您的会话生命周期而不是事务生命周期。

    TransactionAutoComplete 与处置无关。它只是控制用于执行操作的事务。如果TransactionScopeRequired 设置为true,您的操作将被TransactionScope 自动包装。 TransactionAutoComplete 设置为 true 如果操作执行没有错误则自动提交事务,如果操作抛出异常则回滚事务。如果您将TransactionAutoComplete 设置为 false,您将必须通过调用手动提交事务:

    OperationContext.Current.SetTransactionComplete();
    

    【讨论】:

    • 我设置 ReleaseServiceInstanceOnTransactionComplete =true 并且在我的客户端的事务完成后,我可以继续从我的服务中获取更多方法。那个怎么样?第二件事,当我在客户端创建 Tran'Scope 然后在服务中调用一些方法并且它们具有 TransactionScopeRequired =true 时,当这些方法启动时,它们使用客户端的 tran'Scope 还是创建新的?如果是,他们为什么这样做?如果不是,我为什么要通过设置 TransactionAutoComplete =true 来关闭它们?然后我不能在我的客户端 Tran'Scope 中继续从客户端调用其他方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 2017-02-20
    • 2014-02-21
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    相关资源
    最近更新 更多