【问题标题】:How to call WebMethod accepting Collection datatype as input如何调用接受集合数据类型作为输入的 WebMethod
【发布时间】:2014-03-16 16:44:51
【问题描述】:

我有一个 .net Web 方法如下

[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 方法只接受一个字符串数组作为输入,而不是一个 List,这不正确,正如您在 Web 方法定义中看到的那样?应该怎么做才能将集合类型传递给 Web 方法?

【问题讨论】:

  • Web 方法接受集合对象作为参数。我测试它。您使用的是哪个 .net 版本?

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


【解决方案1】:

您似乎没有在 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 你的网络方法是什么?是UpdateDataBase吗?因为它不接受字符串数组,所以它接受List&lt;string&gt;,我认为它不是。
  • 是的。 UpdateDatabase() 是 Web 方法。(它接受 List 而我只传递 list)。已更新问题以反映这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-02
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多