我的代码如下:
using (TransactionScope scope = TransactionScopeFactory.CreateTransactionScope())
{
*// some methodes calls for which scope is needed*
...
...
*//than WCF method code for which I don't want transaction to be involved, but if it throws an exception I don't wish scope to be completed*
WcfServiceInstance.SomeMethod();
scope.Complete();
}我的问题是,我可以在事务范围内调用WCF服务方法而不会出现任何问题吗?(我不知道服务方法是如何实现的)另外,我希望确保事务不会涉及到wcf服务方法调用。
发布于 2012-11-01 21:27:34
要将事务从客户端应用程序传播到服务,您需要明确地选择加入到服务器和客户端上的事务流。如果您的客户端使用的是事务感知绑定(NetTcp, NetNamedPipe, WSHttp, WSDualHttp, & WSFederation),那么您应该看到一个布尔属性TransactionFlow。将其设置为false将阻止任何事务从您的客户端流向服务器。
您可以使用TransactionFlow属性在操作级别上获得一些额外的控制,但这是一个服务器端属性,所以如果您不能访问服务代码,那么这可能不是一个选项。
如果TransactionFlow属性不能解决您的问题,请告诉我。请理解,在客户机上将其设置为false将阻止任何&所有事务从客户机传给该特定端点绑定的服务。
发布于 2012-11-01 21:27:28
WCF服务方法可以是事务性的,也可以不是事务性的,这取决于它们的实现方式。如果您希望确保您的服务调用不参与事务,请将服务调用包装在“受抑制的”事务作用域中。这将禁止任何环境事务。
using( new TransactionScope(TransactionScopeOption.Suppress)
{
WcfServiceInstance.SomeMethod()
}https://stackoverflow.com/questions/13177674
复制相似问题