【问题标题】:cannot pass array to webservice in c#无法在c#中将数组传递给webservice
【发布时间】:2014-12-26 04:15:24
【问题描述】:

朋友们,我正在尝试从我的控制台应用程序将一个数组传递给 asp webservice 方法,错误是 "最好的重载方法有一些无效的参数"

下面是我传递数组的函数出现错误的控制台端。

int[] t = new int[6];
ServiceReference1.WebService1SoapClient client=new ServiceReference1.WebService1SoapClient();
for (int i = 0; i < 7; i++)
{
  t[i] = Convert.ToInt32(Console.ReadLine());
}
client.bublesort(t);    //Here is the error in passing to webservice method

另一方面,我的 WEBSERVICE 方法代码是 int 温度 = 0;

[WebMethod]
public int[] bublesort(int[] arr)      
{
    for (int i = 0; i < 5; i++)
    {
        for (int j = i + 1; j < 6; j++)
        {
            if (arr[i] > arr[j])
            {
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}

【问题讨论】:

  • 您遇到的错误是什么?
  • 无法将数组传递给方法。方法在 web 服务中……错误是……“最好的重载方法有一些无效参数”
  • 客户端的方法签名是什么?

标签: c# asp.net arrays web-services


【解决方案1】:

您的问题是您创建了 ASMX Web 服务并尝试添加为服务参考。

如果您在客户端检查方法签名,则它不接受整数数组。取而代之的是 ServiceReference1.ArrayOfInt 类对象。

ServiceReference1.WebService1SoapClient client=new ServiceReference1.WebService1SoapClient();
for (int i = 0; i < 7; i++)
{
  t[i] = Convert.ToInt32(Console.ReadLine());
}
ServiceReference1.ArrayOfInt item = new ServiceReference1.ArrayOfInt();
item.AddRange(t);
ServiceReference1.ArrayOfInt result = client.bublesort(item);
foreach (var i in result)
{
  Console.WriteLine(i);
}

我想这会解决你的问题。

【讨论】:

  • 感谢您的解决方案,但现在的问题是当我写为 console.writeline(client.bubblesort(item)); 时它没有给出输出;显示排序数组它在输出中给了我这个。 “ServiceReference1.ArrayofInt”。
  • 检查更新的代码,您还可以验证返回类型是什么?
  • 哦,我非常非常非常非常感谢你,亲爱的......你已经解决了我的问题......再次感谢你......
猜你喜欢
  • 2011-11-21
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 2011-07-23
  • 2010-10-23
  • 2021-12-15
  • 1970-01-01
相关资源
最近更新 更多