错误CS0030:无法在Amazon Web Service中将类型'Simple.Amazon.ECS.ImageSet []'转换为'Simple.Amazon.ECS.ImageSet'

时间:2013-09-09 13:02:49

标签: c# .net wcf amazon amazon-product-api

我正在尝试制作一个小型应用程序,可以通过它的ISBN搜索亚马逊的书籍。 我是亚马逊网络服务的新手。

我正在关注以下链接:

  

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'

内部异常是:

  

{"无法生成临时类(结果= 1)。\ r \ n \ r \ n错误CS0030:   无法转换类型' Simple.Amazon.ECS.ImageSet []'至   ' Simple.Amazon.ECS.ImageSet' \ r \ _ \ n \ r \ n错误CS0029:不能隐含地   转换类型' Simple.Amazon.ECS.ImageSet'至   ' Simple.Amazon.ECS.ImageSet []' \ r \ n"}

我不明白为什么我会这样做。我做错了什么?

1 个答案:

答案 0 :(得分:13)

这通常是WCF代理生成中的错误。 See here了解一些细节和解决方法。

取自comment link

这些是截至2012年1月31日在Visual Studio for .Net客户端修复此问题的步骤:

1)单击解决方案资源管理器中包含亚马逊服务参考的项目的“显示所有文件”按钮。

2)展开引用并在编辑器中打开AWSECommerceService.wsdl文件

3)在第584行,将“maxOccurs”改为“1”。

4)保存AWSECommerceService.wsdl文件

5)右键单击Reference.svcmap并单击“运行自定义工具”

6)展开Reference.svcmap并打开Reference.cs或Reference.vb

7)使用窗口顶部的下拉列表导航到AmazonAPI.your namespace.Item。

8)导航到ImageSets属性并确认其声明如下所示:

public ImageSet[] ImageSets {

并不喜欢这个

public ImageSet[][] ImageSets {

9)重建你的项目