У нас есть приложение, для которого один из наших объектов DTO имеет свойство, типизированное как IDictionary<string, object>
.
Я сейчас пытаюсь выставить этот объект через службу WCF.Это работает в некоторых случаях, но не в общем случае.Чтобы продемонстрировать проблему, рассмотрим следующие два метода:
[OperationContract]
public IDictionary<string, object> Test1()
{
return new Dictionary<string, object>
{
{ "testkey1", "newstringvalue"},
};
}
[OperationContract]
public IDictionary<string, object> Test2()
{
return new Dictionary<string, object>
{
{ "testkey1", "newstringvalue"},
{ "testkey2", new object [] { "one" , "two", "three", } }
};
}
Метод Test1 () работает как положено, но когда я вызываю Test2 (), я получаю странную ошибку времени выполнения на клиенте:
Истекло время ожидания канала запроса в ожидании ответа после 00:01:00.Увеличьте значение тайм-аута, передаваемое вызову Request, или увеличьте значение SendTimeout в Binding.Время, отведенное для этой операции, могло быть частью более длительного времени ожидания.
Внутреннее исключение: удаленный сервер возвратил ошибку: (504) Время ожидания шлюза.
Это несмотря натот факт, что исключение было брошено мгновенно, т.е.На самом деле мне не пришлось ждать ни минуты для этого ответа.На сервере не отображается никаких ошибок.
Я подозреваю, что это связано с тем, что сериализатор не может сериализовать объект [], но это не то, что указано в ошибке.
Итакмои вопросы:
- Что здесь происходит?
- Как мне обойти это, чтобы я мог правильно сериализовать свои объекты?
Спасибо.