【问题标题】:Passing string array to webservice method将字符串数组传递给 webservice 方法
【发布时间】:2012-10-11 02:21:33
【问题描述】:

我有一个使用这种方法的网络服务:

[WebMethod]
public int[] stringTest(string[] tString)
{

    int numberOfStrings = tString.Length;
    int[] returnS = new int[numberOfStrings];
    for (int i = 0; i <= numberOfStrings; i++)
    { 
        returnS[i] = 1;

    }
    return returnS;
}

然后我尝试从客户端程序向它传递一个字符串数组,如下所示:

var client = new WebServiceSample.WebService1SoapClient();
string[] parameterNames = { "Windsensor","Temperature sensor"};
test = client.stringTest(parameterNames);

但我遇到了这些错误:

“SoapWebServiceClient.WebServiceSample.WebService1SoapClient.stringTest(SoapWebServiceClient.WebServiceSample.ArrayOfString)”的最佳重载方法匹配 有一些无效的参数

和

参数 1:无法从 'string[]' 转换为 'SoapWebServiceClient.WebServiceSample.ArrayOfString'

我的代码有什么问题?

【问题讨论】:

  • 你能附上完整的错误信息吗?
  • 刷新网络服务参考。
  • 你的错误清楚地表明你应该通过SoapWebServiceClient.WebServiceSample.ArrayOfString而不是string[]
  • 感谢您的回复,我该怎么做?如何将 SoapWebServiceClient.WebServiceSample.ArrayOfString 连接到我定义的 parameterNames 数组?

标签: c# asp.net visual-studio-2010 web-services asmx


【解决方案1】:

试试这个

SoapWebServiceClient.WebServiceSample.ArrayOfString arrString = SoapWebServiceClient.WebServiceSample.ArrayOfString();

arrString.AddRange(parameterNames);

或

arrString.Add(....); //if that exists

检查这些链接

希望有帮助!

【讨论】:

    【解决方案2】:

    一个简单的方法是:

    在 JavaScript 中构建一个新数组:

    var myArray = new Array();
    myArray.push([value1, value2,...]);
    

    在 C# 中,只需创建一个 ICollection 参数即可获取您的矩阵:

    [WebMethod(EnableSession = true)]
    public MyMethod[] GetMatrixFromJavascript(System.Collections.ICollection myArray)
    { 
       ... 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多