При отладке проблемы со старым приложением Silverlight я сузил проблему до определенного вызова службы WCF, который выглядит примерно так:
_serviceClient.UpdateFooAsync(fooDto);
Этот код не менялся годами, и в целом он работал, как и ожидалось. Однако с одним конкретным объектом вызов завершается неудачно. Асинхронный вызов происходит как обычно, но соответствующий HTTP-запрос не выполняется, и обработчик, который сработал бы при завершении события - ошибочно или нет - никогда не вызывается.
Вот некоторые дополнительные детали:
- Приложение использует Silverlight 5.
- Сервисный клиент приложения является автоматически сгенерированным клиентом, который наследуется от
System.ServiceModel.ClientBase<T>
.
- Служба использует WCF и .NET 4.0.
- Когда происходит вызов, соответствующая запись не записывается в журнал трассировки WCF.
- Служба использует
BasicHttpBinding
. Я пытался увеличить все квоты и ограничения до их максимальных значений, но это не помогло.
- Объект, который я пытаюсь отправить службе, имеет размер около 600 КБ при сериализации в формате XML / SOAP. Он большой, но находится в пределах, которые в настоящее время настроены для конечной точки.
- Я с помощью нескольких инструментов подтвердил, что HTTP-запрос не выполняется.
Поскольку эта проблема возникает только в случае одной конкретной сущности, я могу только предположить, что виноват какой-то аспект этой сущности, но я не смог определить, что это такое.