日期:2014-05-17  浏览次数:20441 次

该如何Debug???
项目有asp.net服务器端,Silverlight客户端,中间使用“启用 Silverlight的WCF服务”进行通信。

asp.net服务器端:

[OperationContract]
  public List<Monitoring> GetMonitorDatasService(Monitoring.EnergyType energytype, KeyValuePair<Monitoring.Period, string> monitordate, KeyValuePair<Monitoring.MonitorType, string> monitortype, string meterusetype)
  {
  return GetMonitorDatas(energytype, energytype.ToString(), monitordate, monitortype, meterusetype);
  }

Silverlight客户端:
 private void ChartsDataBind()
  {
  ChartsServiceClient.ChartsServiceClient serviceclient = new ChartsServiceClient.ChartsServiceClient();
  serviceclient.ChartsServiceInitializeOneAsync(issubstation);
  serviceclient.GetMonitorDatasServiceCompleted += new EventHandler<GetMonitorDatasServiceCompletedEventArgs>(serviceclient_GetMonitorDatasServiceCompleted);
  serviceclient.GetMonitorDatasServiceAsync(Monitoring.EnergyType.EM, monitordate, monitortype, meterusetype);
   
  }

void serviceclient_GetMonitorDatasServiceCompleted(object sender, GetMonitorDatasServiceCompletedEventArgs e)
  {
  var datas = e.Result;
  MessageBox.Show(datas.Count.ToString());
  }

问题一:现在有报错,可不可以在“Silverlight”客户端设置一个“断点”。从“Silverlight”客户端,单步调试(Debug),到服务器端(asp.net)站点,看整个的调用过程?


“Reference.cs”下:

public System.Collections.ObjectModel.ObservableCollection<MyCharts.ChartsServiceClient.Monitoring> EndGetMonitorDatasService(System.IAsyncResult result) {
  object[] _args = new object[0];
  System.Collections.ObjectModel.ObservableCollection<MyCharts.ChartsServiceClient.Monitoring> _result = ((System.Collections.ObjectModel.ObservableCollection<MyCharts.ChartsServiceClient.Monitoring>)(base.EndInvoke("GetMonitorDatasService", _args, result)));

这一句报错,错误信息如下;
格式化程序尝试对消息反序列化时引发异常: 尝试对参数 进行反序列化时出错: monitordate。InnerException 消息是““EndElement”命名空间“”中的“monitordate”并非所需元素。所需元素应为“key”。”。有关详细信息,请参见 InnerException。

问题二:这是怎么回事呢?这个错误应该怎样调试???

  return _result;
  }

------解决方案--------------------

------解决方案--------------------
你用常规的方法打开你的站点,然后再打开VS调试菜单中的附加到进程,将进程附加至iexplorer,然后再调试silverlight程序,这就是attach服务进程,同样对于服务端也可以这样调试,不过选择的对象是w3svc
------解决方案--------------------
WCF?? 唉...我都还没学过! 学习了
------解决方案--------------------
估计有类继承。debug关系没搞好。