2012-08-09 49 views
7

I私はJavaScriptからWebMethod属性を呼び出そうとすると、次のエラー「Webサービスメソッド名が有効ではありません」を取得Webサービスメソッド名が有効ではありません

のSystem.InvalidOperationException:SaveBOAT Webサービスメソッド名が有効ではありません。 at System.Web.Services.Protocols.HttpServerProtocol.Initialize()at System.Web.Services.Protocols.ServerProtocol.SetContext(型の型、HttpContextコンテキスト、HttpRequest要求、HttpResponse応答) at System.Web.Services.Protocols .ServerProtocolFactory.Create(タイプタイプ、のHttpContextコンテキスト、HttpRequestの要求、のHttpResponse応答、ブール& abortProcessing)

HTMLコード:

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

JSコード:

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

C#コードのスタックオーバーフローおよびASP.NETで検出されたすべてのソリューションはsite.butしようとした私はそれらのどれものために働いていない

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

(AllService.asmxファイル内のWebメソッド)私。

答えて

13

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

とC#のコードの変更はPidでJSON

されるべきだと思う、

+0

私の場合、公開キーワードがありません – Naga

0

ServiceReferenceクラスを追加しましたか? thisを1回確認してください。あなたのコメントに基づいて、私はそれが愚かだったデータ型が文字列

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

はこれを使用してみてください何をすべきかを伝えることができます間違い。 メソッド宣言から "Static"を削除します。私の場合は

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

私はあなたのコードを試しましたが、 "Unknown web method SaveBOAT。
パラメータ名:methodName" – ravidev

+0

"public static string SaveBOAT(string Pid)"から静的を削除しました。 – Rohit

2

は、エラーがWebサービスメソッドは、私があまりにも同様の問題に直面した

+0

なぜそれが公開されているのか分かりますか – John

+0

@John公開されていないWebサービスメソッドをどのように呼び出すと思いますか? – Archer

+0

もちろんコピー/貼り付けエラーでした;) – Alessio

0

「プライベート」の代わりに「公共」宣言されたということでした。解決策には、すべての名前を保証することに関連するすべてをチェックすること、パラメータが正しく応答されたときに正しく渡されることが含まれます。 UIページで呼び出すWebメソッド名が正しく入力されていること、データ、データ型が正しいことなどを確認してください。私の場合、私のajax呼び出しでWebメソッド名のスペルが間違っています。名前を見つけて修正したら正常に動作します。例については
:.asmxというクラスファイルでは、これはメソッド名「IsLeaseMentorExistWithTheSameName」ですが、私はUIから呼び出されたときに、これは私が呼ばれる方法です:

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

お知らせ言葉は「」欠落していること。それは間違いだったし、修正したのでうまくいきました。

関連する問題