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

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

Windows Communication Foundation (WCF) での AJAX サポートは、ScriptManager コントロールを介して ASP.NET AJAX と共に使用できるように最適化されています。ASP.NET AJAX と共に WCF を使用する例については、「Ajax Samples」を参照してください。

Bb410768.note(ja-jp,VS.100).gif注 :
このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。

次に示すサンプルのサービスは、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 サービスはブラウザーから呼び出すことができません。たとえば、https://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200 に移動すると、エラーになります。これは、URL ではなく、JSON 形式で n1 パラメーターと n2 パラメーターがメッセージ本文で送信されることを POST サービスが想定しているためです。

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

Bb410768.Important(ja-jp,VS.100).gif 注 :
サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の (既定の) ディレクトリを確認してください。

<InstallDrive>:\WF_WCF_Samples

このディレクトリが存在しない場合は、「.NET Framework 4 向けの Windows Communication Foundation (WCF) および Windows Workflow Foundation (WF) のサンプル」にアクセスして、Windows Communication Foundation (WCF) および WF のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Ajax\PostAjaxService

サンプルを設定、ビルド、および実行するには

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

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

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