我有一个具有如下签名的web方法:
public string[] ToUpper(string[] values)我正在使用Visual 2010中的“添加服务引用”来生成对我的服务的引用。不幸的是,这个过程创建了一个名为“ArrayOfString”的代理类,并使用这种类型而不是预期的'string[]‘类型。生成的异步服务调用签名最后如下所示:
public void ToUpperAsync(Demo.ServiceReference.ArrayOfString values) { }
public void ToUpperAsync(Demo.ServiceReference.ArrayOfString values, object userState) { }我已经尝试了所有的选项'Collection‘下拉到配置服务参考表单,这似乎没有什么区别。
这是以前的工作,但由于某种原因,它突然停止工作,也许是在从服务中删除另一个web方法之后。
如何使生成的服务引用类使用string[]类型而不是生成的ArrayOfString类型?如果能在这方面提供任何帮助,我们将不胜感激。
编辑:就像@Oleg建议的那样,我正在使用ASMX服务。
发布于 2011-02-13 13:38:12
当向ASMX样式的web服务添加“服务引用”时,我可以重现您的问题。但是,当将"Service“添加到WCF服务或将”string[]引用“添加到ASMX服务参数时,则为string[]类型。
根据这一点,我认为您可以通过将“服务引用”替换为"Web引用“来解决问题。
按“高级.”按钮“添加服务引用对话框”。

按“添加网页参考.”

插入服务url并添加web引用

发布于 2014-03-06 10:01:29
对XmlSerializer的这一更改可以在Reference.svcmap文件中完成。在服务引用文件夹中打开它,并将序列化器xml节点从“自动”更改为"XmlSerializer“,这解决了问题!干杯
发布于 2011-04-19 22:11:37
太晚了,但能在未来帮助人们.
使用svcutil,并显式地通知命令行util,您希望代理类由XmlSerializer而不是DataContractSerializer序列化(默认)。这是样品:
svcutil /out:c:\Path\Proxy.cs /config:c:\Path\Proxy.config /async /serializer:XmlSerializer /namespace:*,YourNamespace
请注意,web服务是一个ASP.NET web服务,好吗?!
https://stackoverflow.com/questions/4929735
复制相似问题