2012-08-09 11 views
7

otrzymuję następujący błąd „Web Service nazwa metody jest nieprawidłowy” podczas próby wywołania WebMethod z javascriptWeb nazwa metody obsługę nie obowiązuje

System.InvalidOperationException: SaveBOAT Web Service nazwa metody jest nieprawidłowy . w System.Web.Services.Protocols.HttpServerProtocol.Initialize() w System.Web.Services.Protocols.ServerProtocol.SetContext (typ typu, kontekst HttpContext, żądanie HttpRequest, odpowiedź HttpResponse) w System.Web.Services.Protocols .ServerProtocolFactory.Create (typ Type, HttpContext kontekst, HttpRequest prośba, HttpResponse odpowiedź, Boolean & abortProcessing)

HTML kod:

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

JS Kod:

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

kod C# (metoda Web w pliku AllService.asmx)

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

Próbowałem wszystkie znalezione na przepełnienie stosu i ASP.NET rozwiązania site.but żaden z nich nie pracował mnie.

Odpowiedz

13

To było głupie błąd. usunąć "Statyczny" z deklaracji metody.

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

w moim przypadku brak jest słowa kluczowego publicznego – Naga

0

Czy dodałeś klasę ServiceReference. Sprawdź raz this. Opierając się na swoim komentarzu mogę powiedzieć, co zrobić

1

Spróbuj użyć tego, myślę, że typ danych powinien być 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); 
      } 
     }); 

A w C Zmiana # kod PID ciąg

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

Wypróbowałem twój kod i otrzymałem ten błąd "Nieznana metoda sieciowa SaveBOAT.
Nazwa parametru: nazwa metody" – ravidev

+0

Usuń statyczny z "public static string SaveBOAT (string Pid)". – Rohit

2

W moim przypadku był błąd, że metoda Web Service został ogłoszony „prywatny”, a nie „publiczne”

+0

Czy wiesz, dlaczego to zmusza do bycia publicznym? – John

+0

@John Jak można się spodziewać, aby wywołać metodę usługi internetowej, jeśli nie była publiczna? – Archer

+0

Oczywiście był to błąd kopiowania/wklejania;) – Alessio

0

ja też w obliczu podobnego problemu. Rozwiązanie obejmuje sprawdzenie wszystkiego, co wiąże się z zapewnieniem wszystkich nazw, parametry są przekazywane poprawnie, ponieważ wiele z nich odpowiedziało. Upewnij się, że nazwa metody sieciowej, którą wywołujemy na stronie interfejsu użytkownika, jest zapisana poprawnie, dane, typy danych są poprawne itd. W moim przypadku błędnie wpisałem nazwę metody internetowej w wywołaniu ajax. Działa poprawnie, gdy tylko znajdę i poprawię poprawnie nazwę.
Ex: W .asmx pliku klasy, jest to nazwa metody „IsLeaseMentorExistWithTheSameName”, ale gdy zadzwoniłem z UI to jak nazwałem:

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

Zauważ, że słowo „The” brakuje. To był błąd i poprawiłem go, więc wszystko poszło dobrze.

Powiązane problemy