2013-09-09 5 views
7

Я пытаюсь сделать небольшое приложение, которое может выполнять поиск в книге на амазонке это ISBN. Я совершенно новый в веб-сервисе Amazon.ошибка CS0030: Невозможно преобразовать тип «Simple.Amazon.ECS.ImageSet []» в «Simple.Amazon.ECS.ImageSet» в веб-службе Amazon

Я следую ниже ссылкам:

http://flyingpies.wordpress.com/2009/08/01/17/

http://flyingpies.wordpress.com/2009/08/13/signing-amazon-product-advertising-api-cwcf-part-2/

Search amazon example with new amazon service

И мой код:

BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); 
binding.MaxReceivedMessageSize = int.MaxValue; 

AWSECommerceServicePortTypeClient amazonClient = new AWSECommerceServicePortTypeClient(
    binding, new EndpointAddress("https://webservices.amazon.com/onca/soap?Service=AWSECommerceService")); 

amazonClient.ChannelFactory.Endpoint.Behaviors.Add(new AmazonSigningEndpointBehavior(AccessKeyId, SecretAccessKey)); 

ItemLookup lookup = new ItemLookup(); 
ItemLookupRequest request = new ItemLookupRequest(); 

request.IdType = ItemLookupRequestIdType.ISBN; 
request.ItemId = new[] {"9780297870470"}; 
request.ResponseGroup = new[] { "OfferSummary" }; 
request.SearchIndex = "All"; 
request.IdTypeSpecified = true; 

lookup.Request = new ItemLookupRequest[] { request }; 
lookup.AWSAccessKeyId = AccessKeyId; 
lookup.AssociateTag = "wwwyaodaromane-90"; 
var response = amazonClient.ItemLookup(lookup); 

Когда я пытаюсь отправить запрос, я получаю это исключение

Была ошибка в сериализации тела сообщения ItemSearchRequest1: «Невозможно создать временный класс (результат = 1).

ошибка CS0030: не удается преобразовать тип "Simple.Amazon.ECS.ImageSet [], чтобы

внутреннее исключение 'Simple.Amazon.ECS.ImageSet' Is:

{» Невозможно создать временный класс (результат = 1). \ R \ nerror CS0030: Невозможно преобразовать тип 'Simple.Amazon.ECS.ImageSet []' в 'Simple.Amazon.ECS.ImageSet' \ r \ nerror CS0029: Не может неявно конвертировать тип «Simple.Amazon.ECS.ImageSet» в «Простой. Amazon.ECS.ImageSet [] '\ r \ n "}

Я не понимаю, почему я это получаю. Что я делаю неправильно?

ответ

11

Обычно это ошибка в генерации прокси-сервера WCF. See here для некоторых деталей и обходной путь.

comment link Взято из:

Эти шаги, по состоянию на 31 января 2012 года, чтобы исправить эту проблему в Visual Studio для клиентов .Net:

1) Нажмите кнопку «Показать все файлы» кнопку в Solution Explorer для проекта, содержащего ссылку на службу amazon.

2) Раскройте ссылку и откройте AWSECommerceService.wsdl файл в редакторе

3) В строке 584 изменить «MaxOccurs' на "1".

4) Сохраните AWSECommerceService.wsdl файл

5) щелкните правой кнопкой мыши Reference.svcmap и нажмите кнопку "Выполнить пользовательский инструмент"

6) Развернуть Reference.svcmap и открыть либо Reference.cs или Reference.vb

7) Перейдите в пространство имен AmazonAPI.your.Item, используя раскрывающееся меню в верхней части окна.

8) Перейдите к свойству ImageSets и подтвердить, что его заявление выглядит следующим образом:

public ImageSet[] ImageSets { 

и НЕ нравится этот

public ImageSet[][] ImageSets { 

9) Перестроить проект

+0

Для всех, кто сталкивается с этой проблемой, точное исправление подробно описано здесь в сообщении JB Bradshaw: https://forums.aws.amazon.com/thread.jspa?threadID=72429 –