【问题标题】:How to send input from web application to a web service如何将输入从 Web 应用程序发送到 Web 服务
【发布时间】:2012-05-04 03:08:21
【问题描述】:

我在将输入发送到 web 服务时遇到了一些问题。

这是我的代码:

Protected Sub Button5_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Saman.Click

    SamanDB.DataSource = Nothing
    SamanDB.DataBind()

    Dim str As String
    str = TextBox1.Text

   >> Dim copsdataXML As String = myCOPSWeb.Summon(str)

    Dim dsReader As StringReader = New StringReader(copsdataXML)
    Dim DS As DataSet = New DataSet()
    DS.ReadXml(dsReader)

    SamanDB.DataSource = DS  
    SamanDB.DataBind()
End Sub

这里是网络服务:-

public string Summon(string Input1)
{
    SqlDataAdapter dbadapter = null;
    DataSet returnDS = new DataSet();

    using (SqlConnection dbconn = new SqlConnection(
        "Server=11.2.6.10;"
        + "Database=POLIS;"
        + "User ID=*******;"
        + "Password=*******;"
        + "Trusted_Connection=False;"))
    {

        SqlCommand cmd = new SqlCommand();

        string sqlQuery = "select * from SUMMON where ic_no=@Input1";
       
        cmd.CommandText = sqlQuery;
        cmd.Connection = dbconn;
        dbadapter = new SqlDataAdapter(cmd);

        cmd.Parameters.Add("@Input1", SqlDbType.VarChar).Value = Input1;

        dbadapter.Fill(returnDS);
    }

    return returnDS.GetXml();
}

我想将 TextBox1.Text 作为 Input1 发送到 web 服务。 这是我得到的例外:-

SoapException 未被用户代码处理。

System.Web.Services.Protocols.SoapException:服务器无法处理请求。 ---> System.Data.SqlClient.SqlException: Parameterized Query '(@Input1 varchar(8000))select * from SUMMON where ic_no=@Input1' 需要参数@Input1,但未提供。

【问题讨论】:

  • 哪一行抛出异常?
  • 我已经编辑过了,行问题我用“>>”标记了..thanks..:)

标签: c# asp.net sql vb.net visual-studio-2008


【解决方案1】:

在 Summon 方法中,尝试替换这一行:

cmd.Parameters.Add("@Input1", SqlDbType.VarChar).Value = Input1;

有了这个:

cmd.Parameters.AddWithValue("@Input1", Input1);

【讨论】:

  • 我已经这样做了,但结果还是一样,它抛出了同样的异常..:(..任何其他建议请..:)
【解决方案2】:

编辑:

试试这个顺序

  cmd.Parameters.Add("@Input1", SqlDbType.VarChar).Value = Input1;
  dbadapter = new SqlDataAdapter(cmd);

【讨论】:

  • 仍然不工作..如果我只执行 web 服务,它的工作。但是当我尝试从 Web 应用程序发送输入时,它抛出了该异常。还有其他建议吗?
  • 有没有尝试在webservice中设置断点,查看Input1的值?
  • 是的,已经设置好了,Input1 为空。那就是问题所在。为什么它不能将它发送到 web 服务。我已经检查了 TextBox1.Text 的值是否存在。我该怎么办?
  • 如果它为空,那么你会得到异常。检查此问答social.msdn.microsoft.com/Forums/ar/sqldataaccess/thread/…
  • 那么您是如何声明 myCOPSWeb 的?
猜你喜欢
  • 2020-09-26
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
  • 2013-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多