6

そこに似たような投稿があることは知っていますが、どれにも助けが見つかりませんでした。

私のWebメソッドは、URL書き換えを使用していないときに機能しますが、オンにするとすぐに機能しなくなります。

jQuery

        $.ajax({
            type: "POST",
            url: "index.aspx/SaveSetting",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                console.log(msg);
            }
        });

C#

    [WebMethod()]
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
    public static string SaveSetting()
    {
        return "OK";
    }

これが呼び出されると、ページの完全なHTMLが返され、「OK」メッセージは表示されません。デバッガーを実行したところ、Webメソッドを呼び出すと、WebメソッドではなくページでPage_Loadがトリガーされることがわかりました。

だから私は正しいパスを取得しましたが、webメソッドは呼び出されません。

私はC#、jQuery、ASP.NET3.5を使用しています。

何か助けはありますか?

4

3 に答える 3

2

Webメソッドへの完全なリンクを使用する必要があります。

ファイアバグを見ると、たとえば次のように表示されます。

/ test1が/index.aspxに書き換えられると仮定して、要求しようとしているURLとしてhttp://localhost/test1/index.aspx/SaveSetting

ページがサイトのルートにあると仮定すると、次のように機能します。

url:/index.aspx/SaveSetting

(ちなみに、これはURLルーティングではまったく機能しません!)

おそらく、代わりにWebメソッドをasmxファイルに移動しますか?

于 2012-05-08T15:31:55.057 に答える
0

これをJavaScriptに追加すると、次のようになります。

PageMethods.set_path("/whatever/the/actual/path/is/index.aspx");

次に、標準のwebmethod呼び出しが機能するはずです。

PageMethods.SaveSetting(console.log);

私の答えは、以前に尋ねられたこの質問から取られました。

于 2012-05-08T16:30:44.033 に答える
0

他の誰かがこれにつまずいた場合のフォローアップです。また、Web.configには、ページ自体ではなく、IISがWebメソッドの要求を処理する方法を確実に理解するために必要なものがあります。

<httpModules>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>

この行がないと、まったく同じ問題が発生しました。サーバーは、webmethodからの応答ではなく、FRONTWebページ全体を返します。

web.configには他にも必要なものがある可能性があります。私のは巨大です(ha !!)ので、他に何がこの問題に影響を与えているのか誰にも分かりません。

于 2019-07-09T17:21:03.083 に答える