我有几个关于 WCF 可靠会话可靠性的问题:
WCF 是否在重试期间重新序列化消息?
2. 如果 1 是正确的 - 是否在消息参数被处理后发生?
3. 如果 2 是正确的 - 有什么方法可以确定消息是否已发送?
我还无法通过反射器弄清楚这一点。
UPD 1:我对服务器返回值更感兴趣。他们会发生什么?
UPD 2:消息参数(准确地说是服务器回复)何时处理?收到适当的确认后会发生这种情况吗?这就是我所说的处理参数的意思:
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
我需要用它来处理服务器回复(我有另一个关于我为什么要使用这个解决方案的 SOF 线程)。
UPD 3:我要解决的问题是,我的服务器回复似乎首先被处理,然后应用程序尝试对其进行序列化。我 99% 确信我不会在其他任何地方重复使用相同的对象。Stacktraces 非常丑陋而且很大,无法在此处发布。