Я недавно унаследовал веб-проект Silverlight, который использует службы WCF для обработки асинхронных задач.Я недавно добавил новую функцию, по сути копирующую функциональность функций, которые уже были там, но эта новая не работает.Когда вызывается асинхронный метод, кажется, что один из аргументов не передается;вместо этого он просто равен нулю в вызываемом методе.
Вот метод, который вызывает службу:
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>
.
Итак, поток программы в конечном итоге переходит к веб-службе и к методу 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
вместо этого, он все еще сломан.
Так, как мой объект съедается на пути к службе, а списки нет?