J'ai plusieurs questions sur la fiabilité des sessions WCF :
-
Est-ce que WCF re-sérialise un message pendant une tentative de réessayer ?
~~2. Si le point 1 est correct, cela se produit-il après que les paramètres du message ont été éliminés ou non ?
3. Si le point 2 est correct, y a-t-il un moyen d'identifier avec certitude que le message a été envoyé ?~~
Je n'ai pas encore pu comprendre cela via le réflecteur.
UPD 1 : Je suis plus intéressé par les valeurs de retour du serveur. Que leur arrive-t-il ?
UPD 2 : Quand les paramètres du message (pour être précis - réponse du serveur) sont-ils disposés ? Est-ce que cela se produit lorsque les réponses appropriées sont reçues ? Voici ce que j'entends par "élimination des paramètres" :
at MyNamespace.MyReply.Dispose()
at System.ServiceModel.Dispatcher.MessageRpc.DisposeParametersCore()
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessageCleanup(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
at System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(RequestContext request, Boolean cleanThread, OperationContext currentOperationContext)
at System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext request, OperationContext currentOperationContext)
at System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(IAsyncResult result)
at System.ServiceModel.Diagnostics.Utility.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.Diagnostics.Utility.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.Channels.InputQueue`1.AsyncQueueReader.Set(Item item)
at System.ServiceModel.Channels.InputQueue`1.Dispatch()
at System.ServiceModel.Channels.InputQueueChannel`1.Dispatch()
at System.ServiceModel.Channels.ReliableReplySessionChannel.ProcessSequencedMessage(RequestContext context, String action, WsrmSequencedMessageInfo info)
...stack continues
J'ai besoin de l'utiliser pour disposer de la réponse du serveur (j'ai un autre fil SOF sur les raisons qui m'ont amené à cette solution).
UPD 3 : Le problème que j'essaye de résoudre est qu'elle semble que la réponse de mon serveur est d'abord éliminée, puis que l'application tente de la sérialiser. Je suis sûr à 99 % que je ne réutilise pas le même objet ailleurs. Les Stacktraces sont plutôt moches et volumineux à poster ici.