C# 如何调用接受集合数据类型作为输入的WebMethod

C# 如何调用接受集合数据类型作为输入的WebMethod,c#,asp.net,web-services,asmx,C#,Asp.net,Web Services,Asmx,我有一个.NETWeb方法,如下所示 [WebMethod] public void UpdateDataBase(List<string> values) { SqlConnection conn = new SqlConnection("user id=******; password=*******; server=.\\SQLEXPRESS;database=************;"); SqlCommand comm = new SqlCommand()

我有一个.NETWeb方法,如下所示

[WebMethod]
public void UpdateDataBase(List<string> values)
{
    SqlConnection conn = new SqlConnection("user id=******; password=*******; server=.\\SQLEXPRESS;database=************;");
    SqlCommand comm = new SqlCommand();
    comm.CommandText = "Insert into TestWeb(Test1,Test2,Test3) values(values[0],values[1],values[2])";
    comm.Connection = conn;
    comm.ExecuteNonQuery();
}
从excel外接程序中,我创建了对具有此方法的Web服务类的引用,并使用以下方法调用它

private void Test()
{
    ServiceReference1.SNLSoapClient svr = new ServiceReference1.SNLSoapClient();
    List<string> values = new List<string>();
    values.Add("Test1");
    values.Add("Test2");
    values.Add("Test3");
    svr.UpdateDataBase(values);
}

但是我在最后一行得到一个错误,说Web方法只接受一个字符串数组作为输入,而不接受一个列表,这在Web方法定义中是不正确的?应该怎么做才能将集合类型传递给Web方法?

看起来您没有将列表值添加到UpdateDataBase方法中的SqlCommand中

你可能需要这样的东西

[WebMethod]
public void UpdateDataBase(List<string> values)
{
    SqlConnection conn = new SqlConnection("user id=******; password=*******; server=.\\SQLEXPRESS;database=************;");
    SqlCommand comm = new SqlCommand();
    comm.CommandText = "Insert into TestWeb(Test1,Test2,Test3) values(@p0,@p1,@p2)";
    comm.Parameters.AddWithValue("@p0", values[0]);
    comm.Parameters.AddWithValue("@p1", values[1]);
    comm.Parameters.AddWithValue("@p2", values[2]);
    comm.Connection = conn;
    comm.ExecuteNonQuery();
}

没有。但是我得到一个编译时错误,我的Web方法只接受字符串数组而不接受字符串列表,这显然不是事实。@Sai您的Web方法是什么?它是更新的数据库吗?因为它不接受字符串数组,所以它接受列表,我假设它不是。是。UpdateDatabase是Web方法。它接受一个列表,我只传递一个列表。问题已更新以反映这一点。Web方法接受集合对象作为参数。我测试它。你使用了哪个.net版本?