0

假设我在 IInstanceProvider 的实现中有这个:

public void ReleaseInstance(InstanceContext instanceContext, object instance)
{
    try
    {
        unitOfWork.Commit();
    }
    catch (Exception)
    {
        unitOfWork.Rollback();
        throw;
    }
    finally
    {
        unitOfWork.Dispose();
    }
}

那个投掷;永远不会返回给客户端,因为它是在服务完成它的工作并将数据返回给客户端并因此完成之后才被调用的。我还能如何返回异常?或者有更好的地方来做这件事吗?

4

2 回答 2

0

我认为您正在寻找错误的地方来执行此操作。我认为更好的选择是实现 IDispatchMessageInspector 接口并将其附加到 DispatchRuntime 上 MessageInspectors 属性公开的集合(很可能通过行为)。

有了这个,您可以检查传入和传出的消息,并在需要时修改它们(这是您的异常将如何实现,作为返回消息中的错误)。因此,您不仅会让异常冒泡,而是将其更改为错误消息并将返回消息设置为该消息。

于 2009-02-18T17:15:47.867 回答
0

我对 WCF 中的事务并不熟悉。上面代码中的什么将结果返回给客户端?是回滚吗?

于 2009-02-19T13:59:10.700 回答