Domanda

Diciamo che ho questo in un'implementazione di IInstanceProvider:

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

che buttare; non verrà mai restituito al cliente perché viene chiamato dopo che il servizio ha fatto il proprio lavoro ed è tornato dati al client, ed è quindi fatto. In quale altro modo posso restituire l'eccezione? O c'è un posto migliore per fare questo?

È stato utile?

Soluzione

Credo che si sta cercando nel posto sbagliato per farlo. Credo che una scelta migliore sarebbe quella di implementare l'interfaccia IDispatchMessageInspector e allegarlo alla collezione esposta dalla proprietà MessageInspectors sul DispatchRuntime (attraverso un comportamento, più probabile).

Con questo, è possibile controllare i messaggi in arrivo e in uscita, e modificarli se necessario (che è come la vostra eccezione sarebbe realizzato, come un guasto nel messaggio di ritorno). A causa di questo, non si vogliono solo lasciare che l'eccezione bolla, ma piuttosto, si dovrebbe cambiarlo in un messaggio di errore e impostare il messaggio di ritorno a quello.

Altri suggerimenti

Non sono più familiarità con le operazioni in WCF come dovrei essere. Ciò che nel codice sopra restituisce i risultati al cliente? È il rollback?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top