2012-08-09 16 views
7

ottengo il seguente errore "Web Service nome di un metodo non è valido" quando provo a chiamare webmethod da JavaScriptWeb nome del metodo di servizio non è valido

System.InvalidOperationException: SaveBOAT Web Service nome di un metodo non è valido . su System.Web.Services.Protocols.HttpServerProtocol.Initialize() su System.Web.Services.Protocols.ServerProtocol.SetContext (tipo Tipo, contesto HttpContext, richiesta HttpRequest, risposta HttpResponse) su System.Web.Services.Protocols .ServerProtocolFactory.Create (tipo tipo, HttpContext contesto, HttpRequest richiesta, HttpResponse risposta, booleano & abortProcessing) Codice

HTML:

<asp:LinkButton runat="server" ID="lnkAddBoat" OnClientClick="javascript:AddMyBoat(); return false;"></asp:LinkButton> 

JS Codice:

function AddMyBoat() { 
      var b = document.getElementById('HdnControlId').value; 

      jQuery.ajax({ 
       type: "GET", 
       url: "/AllService.asmx/SaveBOAT", 
       data: { Pid: b }, 
       contentType: "application/text", 
       dataType: "text", 
       success: function(dd) { 
        alert('Success' + dd); 
       }, 
       error: function(dd) { 
        alert('There is error' + dd.responseText); 
       } 
      }); 
} 

codice C# (metodo Web in file di AllService.asmx)

[WebMethod] 
public static string SaveBOAT(int Pid) 
{ 
    // My Code is here 
    //I can put anythng here 
    SessionManager.MemberID = Pid; 
    return ""; 
} 

Ho provato tutte le soluzioni trovate su Stack Overflow e ASP.NET site.but nessuno di loro ha lavorato per me.

risposta

13

E 'stata una stupida sbaglio. rimuovere "Statico" dalla dichiarazione del metodo.

[WebMethod] 
    public string SaveBOAT(string Pid) 
    {   
     SessionManager.MemberID = Pid; 
     return ""; 
    } 
+0

nel mio caso manca la parola chiave pubblica – Naga

0

Ha aggiunto U ServiceReference Classe. Controlla una volta il numero this. Sulla base della sua commento posso dire che cosa fare

1

Prova di utilizzare questo, penso che tipo di dati dovrebbe essere JSON

 jQuery.ajax({ 
      type: "POST", // or GET 
      url: "/AllService.asmx/SaveBOAT", 
      data: { Pid: b }, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json" 
      success: function(dd) { 
       alert('Success' + dd); 
      }, 
      error: function(dd) { 
       alert('There is error' + dd.responseText); 
      } 
     }); 

E in C cambiamento # Codice Pid a stringa

[WebMethod] 
    public static string SaveBOAT(string Pid) 
    {   
     SessionManager.MemberID = Pid; 
     return ""; 
    } 
+0

Ho provato il tuo codice e ho ricevuto questo errore "Metodo web sconosciuto SaveBOAT
Nome parametro: methodName" – ravidev

+0

Rimuovi statico da "public static string SaveBOAT (string Pid)". – Rohit

2

Nel mio caso l'errore è che il metodo di servizio Web è stato dichiarato "privata" invece di "pubblico"

+0

Sai perché lo obbliga a essere pubblico – John

+0

@John Come ti aspetteresti di chiamare un metodo di servizio web se non fosse pubblico? – Archer

+0

Ovviamente si trattava di un errore di copia/incolla;) – Alessio

0

troppo ho affrontato il problema simile. La soluzione include il controllo di tutto ciò che riguarda l'assicurazione di tutti i nomi, i parametri vengono passati correttamente come molti hanno risposto. Assicurati che il nome del metodo web che stiamo chiamando nella pagina dell'interfaccia utente sia scritto correttamente, i dati, i tipi di dati siano corretti e così via. Nel mio caso, ho sbagliato a digitare il nome del metodo web nella mia chiamata ajax. Funziona bene una volta trovato e corretto correttamente il nome.
Per Es: In ASMX file di classe, questo è il nome del metodo "IsLeaseMentorExistWithTheSameName" ma quando ho chiamato da interfaccia utente è così che ho chiamato:

var varURL = <%=Page.ResolveUrl("~/Main/BuildCriteria.asmx") %> + '/IsLeaseMentorExistWithSameName'; 

Si noti che la parola "The" manca. È stato un errore e l'ho corretto, quindi ha funzionato bene.

Problemi correlati