2017-10-19 18 views
1

Scénario:Obtenir 500 erreur en demandant à webservice en utilisant Ajax AutoCompleteExtender

Je travaille sur un projet formulaire en ligne (MVC) où je devais utiliser le service Web dans le contrôle Ajax AutoCompleteExtender pour la recherche but. Tout d'abord, j'ai vérifié HelloWorld() service qui fonctionne très bien mais quand je crée mon service web personnalisé nommé GetParentID et faire une demande à ce sujet. Il me montre 500 message d'erreur qui est défini dans ci-dessous rupture brusque:

enter image description here

ci-dessous est mon code 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> 

Ci-dessous mon Service.asmx.cs Code:

[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(); 
    } 

Je ne sais pas comment faire face à asmx web servic es. C'est mon premier essai. Surtout je fais une demande en utilisant javascript/jquery ajax calls. Ci-dessous mes prérequis que j'utilise dans mon application. Aussi, j'ai joint le lien github référentiel complet afin que vous puissiez m'aider facilement à ce sujet.

github

solution créée sur VS 2013

cadre Dot net 4.5

AjaxControlToolkit

AjaxControlToolkit.Installer.17.1.1.0

Répondre

3

C'est parce que vous appelez que le Web méthode utilisant AJAX. Seuls les services Web avec un attribut [ScriptService] sur la définition de classe peuvent être appelés à partir du script.

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

Donc juste décommenter la ligne et il va commencer à travailler.

[System.Web.Script.Services.ScriptService] 
+0

IDK comment je manque ce petit code de commentaire mais vous méritez merci et upvoted. –