Frage

Lassen Sie uns sagen, ich habe dies in einer Implementierung von IInstanceProvider:

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

Das werfen; wird nie an den Client zurückgegeben werden, da sie aufgerufen wird, nachdem der Dienst es Arbeit getan hat und zurückgegebenen Daten an den Client, und wird deshalb getan. Wie sonst kann ich wieder die Ausnahme? Oder gibt es einen besseren Ort, dies zu tun?

War es hilfreich?

Lösung

Ich glaube, Sie an der falschen Stelle suchen, dies zu tun. Ich denke, eine bessere Wahl wäre, die IDispatchMessageInspector Schnittstelle zu implementieren und an die von der MessageInspectors Eigenschaft auf dem DispatchRuntime (durch ein Verhalten, höchstwahrscheinlich).

ausgesetzt Sammlung anhängen

Mit diesem können Sie Nachrichten prüfen kommen und gehen aus, und sie ändern, wenn es sein muss (das ist, wie Sie Ihre Ausnahme, als Fehler in der Rückmeldung realisiert werden würde). Aus diesem Grunde werden Sie nicht nur die Ausnahme sprudeln lassen, sondern vielmehr, würden Sie es zu einer Fehlermeldung ändern und die Rückmeldung an, dass festgelegt.

Andere Tipps

Ich bin nicht wie bei Transaktionen in WCF vertraut, wie ich sein soll. Was in dem obigen Code gibt die Ergebnisse an den Client? Ist es das Rollback?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top