我有几个关于WCF可靠会话可靠性的问题:
WCF是否在重试尝试期间重新序列化消息?
2.如果1是正确的 - 消息参数处理后是否发生?
3.如果2是正确的 - 是否有任何方法可以确定是否已发送消息?
我还想通过反射器来解决这个问题.
UPD 1:我对服务器返回值更感兴趣.他们会怎么样?
UPD 2:何时处理消息参数(准确地说 - 服务器回复)?收到适当的ack时会发生吗?这是我处理参数的意思:
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
Run Code Online (Sandbox Code Playgroud)
我需要使用它来处理服务器回复(我有另一个SOF线程,为什么我来到这个解决方案).
UPD 3:我试图解决的问题是,我的服务器回复 …
我已经更新了我的TortoiseSVN客户端,现在我在尝试更新或提交到不同的存储库时遇到错误:
请求的名称有效,但未找到所请求类型的数据
关于如何解决这个问题的任何想法?Internet Explorer显示适当的URL就好了.
TortoiseSVN 1.5.3,Build 13783.
HI!
这是我的情况:我有一些值类型,它包含在具有适当隐式转换器的另一种类型中.如果我将包装类型转换为对象然后尝试获取原始值,我只能在两步转换中执行此操作.如果简化我的代码如下:
public enum MyEnum : int
{
First,
Second
}
public class Test<T>
{
public Test(T val)
{
Value = val;
}
private T Value { get; set; }
public static implicit operator T(Test<T> m)
{
return m.Value;
}
public static implicit operator Test<T>(T m)
{
var res = new Test<T>(m);
return res;
}
}
static void Main()
{
object res = new Test<MyEnum>(MyEnum.First);
Console.WriteLine((MyEnum)(Test<MyEnum>)res);
Console.WriteLine((MyEnum)res);
}
Run Code Online (Sandbox Code Playgroud)
首先"Console.WriteLine"正常工作.第二个失败了.
有什么办法可以修改这个行为并让它在没有双重投射的情况下工作吗?
更新1
我必须使用object来进行值转换(在实际应用程序中我必须转换ComboBox.SelectedItem属性,我不想为ComboBox添加额外的属性,因为我必须在任何地方更改我的UI交互代码).
更新2
不允许与System.Object进行隐式转换.
更新3
更新了我的示例代码以反映整个问题.
有时我需要在Silverlight中调用WCF服务并阻止UI直到它返回.当然,我可以分三步完成:
但是,我想将DoSomethingSync方法添加到服务客户端类,只需在需要时调用它.
可能吗?有没有人真正实现过这样的方法?
更新: 看起来答案根本不是使用同步调用.将为异步调用寻找一些易于使用的模式.看一下这篇文章(摘自评论)了解更多信息.