【问题标题】:Using generic collections as parameters in ASMX web services在 ASMX Web 服务中使用泛型集合作为参数
【发布时间】:2010-11-23 08:53:25
【问题描述】:

我有一个 ASMX Web 服务,它有一个方法 -

void DoSomething(List<string> list);

我已经实现了这项服务,在 IIS 中编译和托管。我使用wsewsdl3.exe 来生成代理。在生成的代理中,方法定义更改为 -

DoSomething(string[] list) { ..

不能将 List 作为 ASMX Web 服务的参数吗?我应该怎么做才能修复代理?

【问题讨论】:

  • 顺便说一句,您正在使用 WSE。你知道它已经过时了吗?
  • 是的,约翰,我们正在使用 WSE。我们正在迁移到 WCF,因为我们的一些客户正在迁移到 Windows Server 2008。但是,大多数客户还没有迁移到 WCF,我们必须为他们提供支持。我还在 MSDN 论坛 social.msdn.microsoft.com/Forums/en/asmxandxml/thread/… 上找到了您的博文。将尝试使用它来优先考虑升级故事:)。

标签: .net web-services asmx wse3.0


【解决方案1】:

这很正常。泛型是 .NET 特定的工件。在生成的 WSDL 中没有这样的概念。例如,想象一个不支持 PHP 等泛型的客户端。这就是为什么您的泛型集合作为数组公开的原因。因此,需要修复的客户端代理没有任何问题。

【讨论】:

  • 嗯,好的。那么如果我将服务方法更改为接受 string[] 而不是 List. 可能会更好
  • 这完全取决于你。这不会有任何区别,但如果您希望拥有完全相同的签名,那么可以更改它。
  • @Unmesh:您无需更改任何内容。事实上,如果您使用“添加服务引用”来创建客户端,那么“高级”按钮将显示一个对话框,允许您使用 List&lt;T&gt; 而不是 T[]
猜你喜欢
  • 2014-08-25
  • 2011-09-16
  • 1970-01-01
  • 2014-11-08
  • 2020-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-09
相关资源
最近更新 更多