次の方法で共有


HTTP POST を使用する AJAX サービス

PostAjaxService のサンプルでは、Windows Communication Foundation (WCF) を使用して、HTTP POST を使用する ASP.NET AJAX (Asynchronous JavaScript and XML) サービスを作成する方法を示します。 AJAX サービスには、Web ブラウザー クライアントから基本的な JavaScript コードを使用してアクセスできます。 このサンプルは、「基本的な AJAX サービス」のサンプルに基づいていますが、HTTP GET の代わりに HTTP POST を使用する点が異なります。

Windows Communication Foundation (WCF) の AJAX サポートは、ScriptManager コントロール経由で ASP.NET AJAX と共に使用するために最適化されています。 ASP.NET AJAX と共に WCF を使用する例については、AJAX のサンプルをご覧ください。

Note

このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。

次に示すサンプルのサービスは、AJAX 固有のコードを持たない WCF サービスです。

WebInvokeAttribute 属性が操作に適用されているか、または WebGetAttribute 属性が適用されていない場合、既定の HTTP 動詞 ("POST") が使用されます。 POST 要求は、GET 要求よりも作成が困難ですが、キャッシュされません。キャッシュが不適切な操作に対しては、POST 要求を使用します。

[ServiceContract(Namespace = "PostAjaxService")]
public interface ICalculator
{
    [WebInvoke]
    double Add(double n1, double n2);
    //Other operations omitted…
}

基本的な AJAX サービスのサンプルの場合と同様に、WebScriptServiceHostFactory を使用してサービスに AJAX エンドポイントを作成します。

GET 要求とは異なり、POST サービスはブラウザーから呼び出すことができません。 たとえば、POST サービスではメッセージ本文の n1 および n2 パラメーターが URL ではなく JSON 形式で送信されることを想定しているため、http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200 に移動するとエラーが発生します。

クライアントの Web ページの PostAjaxClientPage.aspx には、ユーザーがページ上のいずれかの操作ボタンをクリックするとサービスを呼び出す ASP.NET コードが含まれています。 サービスでは、「基本的な AJAX サービス」のサンプルと同じように GET 要求で応答します。

サンプルをセットアップ、ビルド、および実行するには

  1. Windows Communication Foundation サンプルの 1 回限りのセットアップの手順」のセットアップ手順を実行したことを確認します。

  2. Windows Communication Foundation サンプルのビルド」の説明に従って、ソリューション PostAjaxService.sln をビルドします。

  3. http://localhost/ServiceModelSamples/PostAjaxClientPage.aspx に移動します (プロジェクト ディレクトリからブラウザーで PostAjaxClientPage.aspx を開かないでください)。