获得500错误,而使用Ajax AutoCompleteExtender请求的web服务

获得500错误,而使用Ajax AutoCompleteExtender请求的web服务

问题描述:

场景:获得500错误,而使用Ajax AutoCompleteExtender请求的web服务

我的工作中,我不得不使用Web服务在阿贾克斯AutoCompleteExtender控件用于搜索目的的网页表单(MVC)项目。首先我检查了HelloWorld()这个服务工作正常,但是当我创建我的自定义网络服务名为GetParentID并对其提出请求时。这表明我捕捉这在下文中定义500错误消息:

enter image description here

下面是我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网络SERVIC ES。这是我第一次尝试。大多数情况下,我使用javascript/jquery ajax调用请求。以下是我在此应用程序中使用的先决条件。此外,我附上了完整的github存储库链接,以便您在这件事上轻松帮助我。在VS创建

github

解决方案2013

点净框架4.5

AjaxControlToolKit

AjaxControlToolkit.Installer.17.1.1.0

那是因为你拨打的网络方法使用AJAX。只能通过脚本调用类定义中具有[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] 
+0

IDK我是如何错过这个小小的评论代码,但你值得感谢和upvoted。 –