我最近继承了一个使用WCF服务来处理异步任务的Silverlight Web项目。我最近添加了一个新功能,基本上复制了已经存在的功能的功能,但这个新功能已经破解。调用异步方法时,其中一个参数似乎没有被传递;相反,它在被调用的方法中只是null。
以下是调用服务的方法:
public IAsyncResult BeginAssignTrucks(OutageGroupSafe outageGroup, List<Truck> trucksArrived, List<Truck> trucksRacked, AsyncCallback callback, object asyncState)
{
return BeginInvoke("AssignTrucks",
new object[] { outageGroup, trucksArrived, trucksRacked },
callback,
asyncState);
}
OutageGroupSafe
是自定义类型。你可以看到我也传递了两个List<Truck>
类型的对象。
那么程序流最终会转移到Web服务,并转到我要求的AssignTrucks
方法:
public OperationBase AssignTrucks(OutageGroupSafe outage, List<Truck> trucksArrived, List<Truck> trucksRacked)
{
// there is stuff here but it really doesn't matter what it is for the purposes of this question
}
如果我在该函数上设置断点,我看到参数outage
为空,即使在另一个函数中传递的参数不是!更重要的是,这两个List
完全没问题。我已经针对类似的调用检查了我的代码这个调用一百次,并且似乎错误。其他方法能够无问题地发送OutageGroupSafe
类型的对象;这只是一个新的问题。 原来它甚至不是什么类型;如果我通过int
而不是它仍然被打破。
那么我的对象如何在去服务的路上被吃掉,而列表却没有?
答案 0 :(得分:0)
您是否将这些类型(OutageGroupSafe
和Truck
)注释为DataContracts?相关成员注释为DataMembers?
答案 1 :(得分:0)
某个地方肯定存在一种类型不匹配,而这种类型不匹配,而不是抛出错误。我将我的所有论据都改为int
,现在它可以了。真的很蠢;在这一天的大部分时间都浪费了。