45

属性でマークされたメソッドを持つ.NET3.5aspxの場所があり[WebMethod]ます。これをjQueryで呼び出し、JSONを双方向に送信します。これはすべてうまくいきます。私の質問は、[ScriptMethod]メソッドに適用するとどうなりますか?私はこれを試しましたが、同じ結果が得られるようです。ScriptMethod同一で互換性がありますかWebMethod、それとも一方が他方が提供しない機能やオーバーヘッドを提供しますか?一般的に、私はWebサービスを実装するために利用できるすべてのオプションと混同していることに気付き、それぞれの長所と短所を知りたいと思います。

4

2 に答える 2

35

次の 2 つのシナリオで ScriptMethod 属性を使用します。

  1. jquery またはその他の ajax リクエスト メカニズムを使用しているが、リクエストを POST ではなく GET にしたい。
  2. javaScript で XML 形式の応答を受け取りたい。

上記の要件のいずれも持っていない場合。ajax リクエストを使用した JSON レスポンスが必要な場合は、WebMethod を使用するだけです。

ここでもう 1 つ紛らわしい要素があります。ScriptService 属性はいつ使用しますか? これは、Microsoft Ajax クライアント スクリプト フレームワークを使用している場合に使用されます。この属性は、通常のオブジェクトと同様に関数を呼び出すことができるように、クライアント上でプロキシ オブジェクトを生成するようにサーバーに指示します。var MyRemoteObject = new RemoteObject(); MyRemoteObject.getMessage(....) また、ScriptService 属性を使用する場合でも、上記のシナリオでのみ ScriptMethod 属性を追加する必要はありません。

ScriptService 属性と ScriptMethod 属性は、WebService 属性と WebMethod 属性のように連携して機能すると思っていたので、最初は戸惑いました。

于 2010-02-11T18:55:51.073 に答える
2

ScriptMethodAttribute属性はオプションです。(ただし、クライアントスクリプトから呼び出すことができるメソッドには、System.Web.Services .. ::。WebMethodAttribute属性が適用されている必要があります。)メソッドがScriptMethodAttributeでマークされていない場合、メソッドはHTTP POSTコマンドを使用して呼び出され、応答はJSONとしてシリアル化されます。スクリプトからこの設定を上書きすることはできません。

から-http://msdn.microsoft.com/en-us/library/system.web.script.services.scriptmethodattribute.aspx

編集:WebMethodとScriptMethodは競合する属性ではありません。上記のパラグラフが言うように、ScriptMethodは追加のアノテーションである可能性があります。

于 2009-06-02T19:46:44.963 に答える