BeginInvoke参数在服务中出现null

时间:2011-08-03 18:02:41

标签: wcf-ria-services

我最近继承了一个使用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而不是它仍然被打破。

那么我的对象如何在去服务的路上被吃掉,而列表却没有?

2 个答案:

答案 0 :(得分:0)

您是否将这些类型(OutageGroupSafeTruck)注释为DataContracts?相关成员注释为DataMembers?

答案 1 :(得分:0)

某个地方肯定存在一种类型不匹配,而这种类型不匹配,而不是抛出错误。我将我的所有论据都改为int,现在它可以了。真的很蠢;在这一天的大部分时间都浪费了。