Hi, all!
I have several questions about WCF reliable session reliability:
Does WCF re-serialize a message during a retry attempt?
2. If 1 is correct - does it happen after message parameters were disposed or not?
3. If 2 is correct - is there any way to identify message was sent for sure?
I could not yet figure that out via reflector.
UPD 1: I'm more interested with server return values. What happens to them?
UPD 2: When are message parameters (to be precise - server reply) disposed? Does it happen when appropriate acks are received? Here is what I mean by disposing parameters:
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
I need to use it to dispose server reply (I have another SOF thread on why I came to this solution).
UPD 3: Issue I'm trying to solve is that it seems that my server reply is first disposed and then application attempts to serialize it. I'm 99% sure that I do not reuse same object anywhere else. Stacktraces are pretty ugly and big to post here.