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

Luk*_*lch 8 c# web-services proxy-classes asmx

我有一个带有这样签名的web方法:

public string[] ToUpper(string[] values)
Run Code Online (Sandbox Code Playgroud)

我在Visual Studio 2010中使用"添加服务引用"来生成对我的服务的引用.不幸的是,这个过程创建了一个名为'ArrayOfString'的代理类,并使用这种类型而不是预期的'string []'类型.生成的异步服务调用签名最终看起来像这样:

public void ToUpperAsync(Demo.ServiceReference.ArrayOfString values) { }
public void ToUpperAsync(Demo.ServiceReference.ArrayOfString values, object userState) { }
Run Code Online (Sandbox Code Playgroud)

我已经尝试了配置服务参考表单中"收集"下拉列表的所有选项,但它似乎并没有什么区别.

这在以前工作,但由于某种原因它可能突然停止工作,可能是从服务中删除另一个Web方法.

如何让生成的服务引用类使用string []类型而不是生成的ArrayOfString类型?任何有关这方面的帮助将不胜感激.

编辑: 正如@Oleg建议的那样,我正在使用ASMX Web服务.

小智 14

这个对XmlSerializer的更改可以在Reference.svcmap文件中完成.在Service Reference文件夹中打开它并将Serializer xml节点从"Auto"更改为"XmlSerializer",这解决了问题!干杯


小智 5

在向ASMX样式的Web服务添加"服务引用"时,我可以重现您的问题.但是,当向WCF服务添加"服务引用"或向ASMX服务参数添加"Web引用"时,类型为string [].

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

按"添加服务引用对话框"上的"高级..."按钮. 添加服务参考

按"添加网络参考..." 高级

插入服务网址并添加网络参考 添加Web引用