假设我在IInstanceProvider的实现中有这个:
public void ReleaseInstance(InstanceContext instanceContext, object instance)
{
try
{
unitOfWork.Commit();
}
catch (Exception)
{
unitOfWork.Rollback();
throw;
}
finally
{
unitOfWork.Dispose();
}
}
throw; 将永远不会返回给客户端,因为它是在服务完成后将被调用并将数据返回给客户端,因此完成了。我怎么能返回例外?或者有更好的地方可以做到这一点吗?
答案 0 :(得分:0)
我认为你在错误的地方做这件事。我认为更好的选择是实现IDispatchMessageInspector接口并将其附加到DispatchRuntime上的MessageInspectors属性公开的集合中(通过行为,很可能)。
通过这种方式,您可以检查进出的消息,并在需要时修改它们(这是您的异常将如何实现,作为返回消息中的错误)。因此,您不仅要让异常冒泡,而且还要将其更改为错误消息并将返回消息设置为该消息。
答案 1 :(得分:0)
我对WCF中的交易并不熟悉。上面的代码中的内容将结果返回给客户端?是回滚吗?