什么时候我可以在WCF中向客户端返回异常?

时间:2009-02-18 17:07:34

标签: wcf nhibernate exception unit-of-work

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

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

throw; 将永远不会返回给客户端,因为它是在服务完成后将被调用并将数据返回给客户端,因此完成了。我怎么能返回例外?或者有更好的地方可以做到这一点吗?

2 个答案:

答案 0 :(得分:0)

我认为你在错误的地方做这件事。我认为更好的选择是实现IDispatchMessageInspector接口并将其附加到DispatchRuntime上的MessageInspectors属性公开的集合中(通过行为,很可能)。

通过这种方式,您可以检查进出的消息,并在需要时修改它们(这是您的异常将如何实现,作为返回消息中的错误)。因此,您不仅要让异常冒泡,而且还要将其更改为错误消息并将返回消息设置为该消息。

答案 1 :(得分:0)

我对WCF中的交易并不熟悉。上面的代码中的内容将结果返回给客户端?是回滚吗?