c# - 系统.InvalidOperationException : Missing parameter

标签 c# asp.net ajax web-services

我尝试将参数发送到 asmx(Web 服务文件),但我收到有关“System.InvalidOperationException:缺少参数”的错误。请帮我解决这个问题,非常感谢

这是我的ajax函数

$("#dd_address").change(function () {

            var rowID = $(this).find(':selected').val();
            console.log(rowID);
            $.ajax({
                url: "WebService.asmx/queryCity",

                data: {
                    id: JSON.stringify(rowID),                        
                },
                type: "POST",
                dataType: "json",
                contentType: "application/json; charset-utf-8",
                success: OnSuccess,
                error: OnError
            });
        });

这是我的asmx代码

 DataTable result;

    [WebMethod(EnableSession = true)]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string queryCity(string id)
    {

        DataTable dt;
        SqlConnection MRK_Conn = new SqlConnection(@"Data Source=192.168.24.30;Initial Catalog=Marketing_Data;Persist Security info=True;User ID=sa;Password=sa");
        SqlCommand cmd = new SqlCommand();
        SqlDataReader sql_dr;
        System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();

        MRK_Conn.Open();
        cmd = new SqlCommand("select [City RowID], [City Description] from City where [Des Ref Province] = '" + id + "'", MRK_Conn);
        dt = new DataTable();
        sql_dr = cmd.ExecuteReader();
        dt.Load(sql_dr);
        sql_dr.Close();
        MRK_Conn.Close();
        result = dt;

        return serializer.Serialize(result);
    }

在网络配置文件中

  <webServices>
    <protocols>
      <add name="HttpGet"/>
      <add name="HttpPost"/>
    </protocols>
  </webServices>

最佳答案

您的代码中的问题在于您将输入参数传递给方法的方式,将其更改为:-

var rowID = { "id" : $(this).find(':selected').val() };

然后,在方法中像这样传递它:-

data : JSON.stringify(rowID)

除此之外,您的 ADO.NET 代码对 SQL Injection 开放攻击,所以请改用参数化查询。

关于c# - 系统.InvalidOperationException : Missing parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29373340/

相关文章:

仅当 ASP.NET 客户端验证成功时,Javascript Click 处理程序

jquery - 最佳实践 : How to configure jQuery UI with ASP. NET

asp.net 错误显示字节偏移量而不是行号,即使在 Debug模式下也是如此

javascript - 如果 URL 哈希发生变化,页面是否会显示不同的内容?

c# - HtmlAgilityPack 用换行符替换段落标签

c# - 如何创建一个函数来解决两个未知数

javascript - Components.classes 错误 - VS 2013 中的 FireFox 附加组件(扩展)

javascript - ajax PUT 不传输数组

javascript - 数据库查询的结果未显示在我的页面上

c# - EF LINQ 翻译 : complex query