12

javascript から webmethod を呼び出そうとすると、「Web サービス メソッド名が無効です」というエラーが表示されます。

System.InvalidOperationException: SaveBOAT Web サービス メソッド名が無効です。System.Web.Services.Protocols.HttpServerProtocol.Initialize() で System.Web.Services.Protocols.ServerProtocol.SetContext (Type タイプ、HttpContext コンテキスト、HttpRequest 要求、HttpResponse 応答) で System.Web.Services.Protocols.ServerProtocolFactory. Create(Type タイプ、HttpContext コンテキスト、HttpRequest リクエスト、HttpResponse レスポンス、Boolean& 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# コード (AllService.asmx ファイルの Web メソッド)

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

Stack Overflow と ASP.NET サイトで見つかったすべてのソリューションを試しましたが、どれもうまくいきませんでした。

4

9 に答える 9

13

ばかげた間違いでした。

Staticメソッド宣言からキーワードを削除します。

[WebMethod]
public string SaveBOAT(string Pid)
{        
     SessionManager.MemberID = Pid;
     return "";
}
于 2012-08-09T08:26:35.303 に答える
1

これを使ってみてください、データ型は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);
            }
        });

そしてC#コードでPidを文字列に変更します

    [WebMethod]
     public static string SaveBOAT(string Pid)
     {        
      SessionManager.MemberID = Pid;
      return "";
     }
于 2012-08-09T07:15:44.703 に答える
0

ServiceReferenceクラスを追加しましたか。これを一度確認してください。あなたのコメントに基づいて、私は何をすべきかを知ることができます

于 2012-08-09T07:12:53.190 に答える