Передать список массивов в приложение WCF - PullRequest
1 голос
/ 24 марта 2011

Я новичок в WCF.У меня есть сценарий, где у меня есть Error while passing ArrayList.

Когда я пытаюсь передать список массивов, это дает ошибку.Пожалуйста, посмотрите на изображение.

Определение ICommissionService

[GeneratedCode("System.ServiceModel", "4.0.0.0")]
[ServiceContract(ConfigurationName = "FPCommission.ICommissionService")]
public interface ICommissionService
{
   [OperationContract(Action = "http://tempuri.org/ICommissionService/GetCommisionResponse",
                      ReplyAction = "http://tempuri.org/ICommissionService/GetCommisionResponseResponse")]
   object[] GetCommisionResponse(object[] loc_);
}

Я до сих пор не получил решение.

Ответы [ 2 ]

0 голосов
/ 25 марта 2011

Эта строка является проблемой из службы:

object[] GetCommisionResponse(object[] loc_);

То, что вы сказали WCF здесь, это то, что вы собираетесь возвращать массив Object.Из-за этого клиент ожидает получить обратно массив Object.Это, конечно, не то, что вы на самом деле даете.

Подклассы в WCF не работают так же, как в других местах.Вы должны явно определить в службе, что вы возвращаете, потому что клиент должен знать, чего ожидать и создавать классы.

Так что, если вы на самом деле возвращаете массив Flight, измените его на этот:

Flight[] GetCommisionResponse(object[] loc_);

Но если вы возвращаете что-то и некоторые его подклассы, вам придется использовать атрибут KnownType .

[KnownType(typeof(FlightSubClass))]
Flight[] GetCommisionResponse(object[] loc_);

Вы можетесделать то же самое с интерфейсом, используя ServiceKnownType , и сделать это нужно только один раз.

0 голосов
/ 24 марта 2011

Когда вы генерируете ссылку на Службу, вы должны установить для CollectionType значение System.Collections.Arraylist - если вы используете пользовательский интерфейс, он находится в разделе Advanced, если вы используете svcutil.exe, это ключ / ct

Существует намного больше информации в Коллекциях в контрактах на данные на MSDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...