首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以停止生成ArrayOfString而不是string[]的服务引用吗?

我可以停止生成ArrayOfString而不是string[]的服务引用吗?
EN

Stack Overflow用户
提问于 2011-02-08 04:58:23
回答 3查看 5.5K关注 0票数 8

我有一个具有如下签名的web方法:

代码语言:javascript
复制
public string[] ToUpper(string[] values)

我正在使用Visual 2010中的“添加服务引用”来生成对我的服务的引用。不幸的是,这个过程创建了一个名为“ArrayOfString”的代理类,并使用这种类型而不是预期的'string[]‘类型。生成的异步服务调用签名最后如下所示:

代码语言:javascript
复制
public void ToUpperAsync(Demo.ServiceReference.ArrayOfString values) { }
public void ToUpperAsync(Demo.ServiceReference.ArrayOfString values, object userState) { }

我已经尝试了所有的选项'Collection‘下拉到配置服务参考表单,这似乎没有什么区别。

这是以前的工作,但由于某种原因,它突然停止工作,也许是在从服务中删除另一个web方法之后。

如何使生成的服务引用类使用string[]类型而不是生成的ArrayOfString类型?如果能在这方面提供任何帮助,我们将不胜感激。

编辑:就像@Oleg建议的那样,我正在使用ASMX服务。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-13 13:38:12

当向ASMX样式的web服务添加“服务引用”时,我可以重现您的问题。但是,当将"Service“添加到WCF服务或将”string[]引用“添加到ASMX服务参数时,则为string[]类型。

根据这一点,我认为您可以通过将“服务引用”替换为"Web引用“来解决问题。

按“高级.”按钮“添加服务引用对话框”。

按“添加网页参考.”

插入服务url并添加web引用

票数 5
EN

Stack Overflow用户

发布于 2014-03-06 10:01:29

对XmlSerializer的这一更改可以在Reference.svcmap文件中完成。在服务引用文件夹中打开它,并将序列化器xml节点从“自动”更改为"XmlSerializer“,这解决了问题!干杯

票数 15
EN

Stack Overflow用户

发布于 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服务,好吗?!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4929735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档