C# 来自Silverlight的WCF呼叫提供了一个;空";对象,在WPF中它可以工作
我有一个类,它在WPF和SL中共享相同的代码 我现在的问题是,我在SL中有一个WCF调用,它为我提供了一个空对象,但当我在WPF中运行相同的代码时,它可以工作: 这是我的电话:C# 来自Silverlight的WCF呼叫提供了一个;空";对象,在WPF中它可以工作,c#,wpf,wcf,silverlight,C#,Wpf,Wcf,Silverlight,我有一个类,它在WPF和SL中共享相同的代码 我现在的问题是,我在SL中有一个WCF调用,它为我提供了一个空对象,但当我在WPF中运行相同的代码时,它可以工作: 这是我的电话: private async void Selector_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { var channel = CommonClient.Instance.MainCommonService.
private async void Selector_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
var channel = CommonClient.Instance.MainCommonService.Channel;
var info = new OperationModeStateInfoDTO() { Name = this.OperationMode.Name, State = this.OperationMode.CurrentState };
var ret = await Task.Factory.FromAsync((a, b) => channel.BeginSwitchOperationModeCp(CommonClient.Instance.SessionId, info, a, b), (r) => channel.EndSwitchOperationModeCp(r), TaskCreationOptions.None);
SecurityClient.CheckSecurityAnswerAndReportError(ret);
}
在Silverlight中调用“info”变量中的对象时,该对象在服务器上为null。当我在WPF中调用它时,它工作了!变量before(SessionId)的值起作用,意味着我在SL和WPF中得到了该值
而且类operationModerateInfoDTO在WPF&SL中具有相同的共享代码
在这里:
发现我自己的错误
我有两个WCF接口,一个在服务器上使用,另一个在客户端使用WPF和SL
服务器端:
[OperationContract(IsOneWay = false)]
SecurityAnswerDTO SwitchOperationModeCp(string sessionId, OperationModeStateInfoDTO myOperationModeStates);
客户端:
[OperationContract(IsOneWay = false, AsyncPattern = true)]
IAsyncResult BeginSwitchOperationModeCp(string sessionId, OperationModeStateInfoDTO myOperationModeState, AsyncCallback callback, object state);
SecurityAnswerDTO EndSwitchOperationModeCp(IAsyncResult res);
问题在于接口中参数的名称不同:myOperationModerates和myOperationModerate!
但我不明白的是,它在WPF中工作,即使参数不同
我在这里找到了答案:
[OperationContract(IsOneWay = false, AsyncPattern = true)]
IAsyncResult BeginSwitchOperationModeCp(string sessionId, OperationModeStateInfoDTO myOperationModeState, AsyncCallback callback, object state);
SecurityAnswerDTO EndSwitchOperationModeCp(IAsyncResult res);