0

IInstanceProvider の実装にこれがあるとしましょう:

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

そのスロー。サービスが作業を完了してデータをクライアントに返した後に呼び出されているため、クライアントに返されることはありません。他にどのように例外を返すことができますか? または、これを行うためのより良い場所はありますか?

4

2 に答える 2

0

私は、WCF のトランザクションにあまり詳しくありません。上記のコードでクライアントに結果を返すものは何ですか? ロールバックですか?

于 2009-02-19T13:59:10.700 に答える
0

これを行うには間違った場所を探していると思います。IDispatchMessageInspector インターフェイスを実装し、それを DispatchRuntime の MessageInspectors プロパティによって公開されたコレクションにアタッチする方がよいと思います (おそらくビヘイビアを通じて)。

これにより、出入りするメッセージを検査し、必要に応じてそれらを変更できます (これにより、戻りメッセージの障害として例外が認識されます)。このため、例外をバブルアップさせるだけでなく、それを障害メッセージに変更し、戻りメッセージをそれに設定します。

于 2009-02-18T17:15:47.867 に答える