【问题标题】:What's the trouble on passing a List<KeyValuePair<string, string>> to a WebService?将 List<KeyValuePair<string, string>> 传递给 WebService 有什么问题?
【发布时间】:2014-04-16 12:58:18
【问题描述】:

这是我的asmxWebService 方法:

[WebMethod]
public string GetHeader(List<KeyValuePair<string, string>> signature_additional_parameters)
{
    return "ok";
}

但是当我从另一个应用程序调用它时:

var signature_additional_parameters = new List<KeyValuePair<string, string>>();
signature_additional_parameters.Add(new KeyValuePair<string, string>("test", "my data"));

var header = MyWS.GetHeader(signature_additional_parameters);

它说 'WSArchieSocial.WSModuloSocial.GetHeader(WSArchieSocial.KeyValuePairOfStringString[])' 的最佳重载方法匹配有一些无效参数

为什么要使用WSArchieSocial.KeyValuePairOfStringString[]?我该如何解决?

【问题讨论】:

标签: c# .net web-services


【解决方案1】:

您的网络服务需要KeyValuePair 的数组。只需在您的列表中调用ToArray,您的错误就会得到解决。

var header = MyWS.GetHeader(signature_additional_parameters.ToArray());

我想这与您为服务添加参考的方式有关。您可以在添加服务引用时指定集合类型,默认为数组,这就是它将您的 List&lt;KeyValuePair&gt; 视为数组的原因。

您可以选择集合类型,在添加服务时转到高级。

【讨论】:

  • 嗯,什么也没发生。它打印相同的错误消息:O
  • @markzzz,再次添加引用,在Collection type中选择GenericList,如图所示。
  • 我添加的是 Web 引用,而不是服务引用(第二个屏幕下方的按钮添加 Web 引用)。 DataType 似乎被忽略了:O
  • 尝试使用服务参考:没有任何变化!即使使用 .ToArray() 或 .ToList()
  • 太不可思议了:如果我在 WebService 方法上设置 KeyValuePair&lt;string, string&gt;[] ghgh 也不会起作用
猜你喜欢
  • 2017-06-18
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
  • 2015-07-02
  • 1970-01-01
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多