このサンプルでは、新しいコンテンツ タイプを Windows Communication Foundation (WCF) メッセージの本文の書式に割り当てる方法を示します。
![]() |
---|
このサンプルをビルドして実行するには、.NET Framework Version 3.5 をインストールする必要があります。プロジェクト ファイルとソリューション ファイルを開くには、Visual Studio 2008 が必要です。 |
<webHttpBinding> 要素は、Web メッセージ エンコーダをプラグインします。これによって、WCF は、JSON、XML、または生のバイナリ メッセージを同じエンドポイントで受信できるようになります。このエンコーダは、要求の HTTP コンテンツ タイプを調べて、メッセージ本文の書式を決定します。このサンプルでは、コンテンツ タイプと本文書式との間の割り当てを制御するための WebContentTypeMapper クラスを示します。
![]() |
---|
このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 |
WCF には、各コンテンツ タイプの既定の割り当てが用意されています。たとえば、application/json は JSON に割り当てられ、text/xml は XML に割り当てられています。JSON または XML に割り当てられていないコンテンツ タイプは、生のバイナリ形式に割り当てられます。
場合によっては (プッシュ スタイルの API など)、クライアントによって返されるコンテンツ タイプがサービス開発者によって制御されないことがあります。たとえば、クライアントは application/json としてではなく text/javascript として JSON を返す場合があります。この場合、サービス開発者は、特定のコンテンツ タイプを正しく処理できるように、次のサンプル コードに示すような WebContentTypeMapper の派生型を指定する必要があります。
public class JsonContentTypeMapper : WebContentTypeMapper
{
public override WebContentFormat
GetMessageFormatForContentType(string contentType)
{
if (contentType == "text/javascript")
{
return WebContentFormat.Json;
}
else
{
return WebContentFormat.Default;
}
}
}
この派生型は、GetMessageFormatForContentType メソッドをオーバーライドする必要があります。このメソッドは、contentType 引数を評価して、Json、Xml、Raw、または Default のいずれかの値を返す必要があります。Default の戻り値は、Web メッセージ エンコーダの既定の割り当てによって決まります。前のサンプル コードでは、text/javascript コンテンツ タイプが JSON に割り当てられ、その他すべての割り当ては変わりません。
JsonContentTypeMapper
クラスを使用するには、エンドポイントでカスタム バインディングを使用する必要があります。
<customBinding>
<binding name="JsonMapper">
<webMessageEncoding webContentTypeMapperType=
"Microsoft.Ajax.Samples.JsonContentTypeMapper, JsonContentTypeMapper, Version=3.5.0.0, Culture=neutral, PublicKeyToken=null" />
<httpTransport manualAddressing="true" />
</binding>
</customBinding>
JsonContentTypeMapper
の使用要件を検証するには、構成ファイルで前にある <webMessageEncoding webContentTypeMapperType=
を <webMessageEncoding />
だけで置換します。text/javascript を使用して JSON コンテンツを送信しようとすると、クライアント ページの読み込みに失敗します。
サンプルを設定、ビルド、および実行するには
「Windows Communication Foundation サンプルの 1 回限りのセットアップの手順」が実行済みであることを確認します。
「Windows Communication Foundation サンプルのビルド」の手順に従って、ソリューション WebContentTypeMapperSample.sln をビルドします。
https://localhost/ServiceModelSamples/JCTMClientPage.htm に移動します (プロジェクト ディレクトリ内からブラウザで JCTMClientPage.htm を開かないでください)。
Copyright © 2007 by Microsoft Corporation.All rights reserved.