错误 CS0030:无法在 Amazon Web Service 中将类型“Simple.Amazon.ECS.ImageSet[]”转换为“Simple.Amazon.ECS.ImageSet”
Posted
技术标签:
【中文标题】错误 CS0030:无法在 Amazon Web Service 中将类型“Simple.Amazon.ECS.ImageSet[]”转换为“Simple.Amazon.ECS.ImageSet”【英文标题】:error CS0030: Cannot convert type 'Simple.Amazon.ECS.ImageSet[]' to 'Simple.Amazon.ECS.ImageSet' in Amazon Web Service 【发布时间】:2013-09-12 23:29:33 【问题描述】:我正在尝试制作一个小型应用程序,可以通过它的 ISBN 在亚马逊搜索一本书。 我是 Amazon Web Service 的新手。
我正在关注以下链接:
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 的正文时出错: '无法生成临时类 (result=1)。
错误 CS0030:无法将类型“Simple.Amazon.ECS.ImageSet[]”转换为 'Simple.Amazon.ECS.ImageSet'
内部异常是:
"无法生成临时类 (result=1)。\r\n错误 CS0030: 无法将类型“Simple.Amazon.ECS.ImageSet[]”转换为 'Simple.Amazon.ECS.ImageSet'\r\n错误 CS0029: 不能隐式 将类型“Simple.Amazon.ECS.ImageSet”转换为 'Simple.Amazon.ECS.ImageSet[]'\r\n"
我不明白为什么会这样。我做错了什么?
【问题讨论】:
【参考方案1】:这通常是 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) 重建您的项目
【讨论】:
对于遇到此问题的任何其他人,J. B. Bradshaw 的帖子中详细说明了确切的解决方法:forums.aws.amazon.com/thread.jspa?threadID=72429 谢谢,正如你所说,它对我有用,但现在我面临新的错误。很难使用 Amazon API... 我刚刚遇到了与 Fedex api 类似的问题。在 VS 2019 中,修复略有不同: 1. 在解决方案资源管理器中双击 Web 服务下的 .xsd 文件 2. 单击“使用 XML 编辑器查看和编辑底层 XML 模式文件” 3. 修复正确的 XML 实体通过将 maxOccurs="unbounded" 更改为 maxOccurs="1" 4. 右键单击 Reference.map 并单击运行自定义工具以上是关于错误 CS0030:无法在 Amazon Web Service 中将类型“Simple.Amazon.ECS.ImageSet[]”转换为“Simple.Amazon.ECS.ImageSet”的主要内容,如果未能解决你的问题,请参考以下文章
hashedmap和指向结构的指针:CXX0030:错误:无法计算表达式
CS3K.com | 工科转CS | Amazon,华为,阿里菜鸟 会把offer给怎样的求职者?