【问题标题】:Getting 500 error while requesting to webservice using Ajax AutoCompleteExtender使用 Ajax AutoCompleteExtender 请求 Web 服务时出现 500 错误
【发布时间】:2018-04-01 00:01:41
【问题描述】:

场景:

我正在开发一个 webform(MVC) 项目,我必须在 Ajax AutoCompleteExtender 控件中使用 Web 服务来进行搜索。首先,我检查了HelloWorld() 服务,该服务运行良好,但是当我创建名为GetParentID 的自定义Web 服务并对其发出请求时。它向我显示了 500 条错误消息,该消息在下面的 snap 中定义:

下面是我的 Default.aspx.cs 代码:

 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<ajaxToolkit:AutoCompleteExtender
    ID="AutoCompleteExtender1"
    runat="server"
    ServiceMethod="GetParentID"
    ServicePath="~/Services.asmx"
    TargetControlID="TextBox1"
    MinimumPrefixLength="1"
    UseContextKey="false"
    CompletionInterval="0" 
    EnableCaching="true" 
    CompletionSetCount="30" 
    FirstRowSelected="true">


</ajaxToolkit:AutoCompleteExtender>

下面是我的 Service.asmx.cs 代码:

[System.Web.Script.Services.ScriptMethod()]
    [System.Web.Services.WebMethod]
    public string[] GetParentID(string prefixText, int count)
    {
        DataTable dt = new DataTable();
        DataColumn dc = new DataColumn("Name", typeof(String));
        dt.Columns.Add(dc);

        DataRow dr = dt.NewRow();

        dr[0] = "Adil";
        dr[0] = "Ahmer";
        dr[0] = "Kamran";
        dr[0] = "Fasih";
        dr[0] = "Azeem";
        dr[0] = "Rana";
        dr[0] = "Humza";
        dr[0] = "Waleed";
        dr[0] = "Faizan Rafiq";
        dr[0] = "Mohsin";
        dr[0] = "Ahsan";
        dr[0] = "Arshad Ahmed";
        dr[0] = "Uncle Majboor";

        dt.Rows.Add(dr);

        //DataTable dt = null;
        DataView dv = null;
        List<string> suggestions = new List<string>();
        //dt = (DataTable)HttpContext.Current.Session["ParentID"];

        if ((dt != null))
        {
            dv = dt.Copy().DefaultView;
            dv.RowFilter = "Name like  '%" + prefixText + "%' ";
            dv.Sort = "ID Asc";

            string c = prefixText;
            double Num = 0;
            bool isNum = double.TryParse(c, out Num);
            int indx = 0;

            foreach (DataRowView dvr in dv)
            {
                if (indx <= count)
                {
                    suggestions.Add(AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem(dvr["Name"].ToString(), dvr["Name"].ToString()));
                    indx += 1;
                }

            }
        }
        return suggestions.ToArray();
    }

我不知道如何处理 asmx 网络服务。这是我的第一次尝试。大多数情况下,我使用 javascript / jquery ajax 调用发出请求。以下是我在此应用程序中使用的先决条件。我还附上了完整的 github 存储库链接,这样你们就可以轻松地帮助我解决这个问题。

github

在 VS 2013 上创建的解决方案

点网框架 4.5

AjaxControlToolKit

AjaxControlToolkit.Installer.17.1.1.0

【问题讨论】:

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


    【解决方案1】:

    那是因为您正在使用 AJAX 调用该 Web 方法。只能从脚本调用类定义中具有 [ScriptService] 属性的 Web 服务。

    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    //    [System.Web.Script.Services.ScriptService]
    

    所以只需取消注释该行,它就会开始工作。

    [System.Web.Script.Services.ScriptService]
    

    【讨论】:

    • IDK 我多么想念这个小评论代码,但你值得感谢和支持。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多