Question

Disons que j'ai cela dans une mise en œuvre de IInstanceProvider:

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

Ce jeter; ne sera jamais retourné au client parce qu'il est appelé après le service a fait son travail et les données retournées au client, et est donc fait. Comment puis-je retourner l'exception? Ou est-il un meilleur endroit pour le faire?

Était-ce utile?

La solution

Je pense que vous êtes à la recherche dans le mauvais endroit pour le faire. Je pense qu'un meilleur choix serait de mettre en œuvre l'interface IDispatchMessageInspector et l'attacher à la collection exposée par la propriété MessageInspectors sur le DispatchRuntime (par un comportement, le plus probable).

Avec cela, vous pouvez consulter les messages entrant et sortant, et les modifier au besoin (ce qui est la façon dont votre exception serait réalisée, comme un défaut dans le message de retour). À cause de cela, non seulement vous laisser bouillonner d'exception, mais plutôt, vous changeriez à un message d'erreur et définissez le message de retour à cela.

Autres conseils

Je ne suis pas aussi familier avec les transactions dans WCF que je devrais être. Ce qui dans le code ci-dessus renvoie les résultats au client? Est-ce le rollback?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top