ラップ解除されたサンプルは、ラップされていないメッセージを示しています。 既定では、メッセージ本文は、サービス操作のパラメーターがラップされるように書式設定されます。 次の例は、ラップ モードでAdd
サービスに対するICalculator
要求メッセージを示しています。
<s:Envelope
xmlns:s="http://www.w3.org/2003/05/soap-envelope"
xmlns:a="http://schemas.xmlsoap.org/ws/2005/08/addressing">
<s:Header>
…
</s:Header>
<s:Body>
<Add xmlns="http://Microsoft.ServiceModel.Samples">
<n1>100</n1>
<n2>15.99</n2>
</Add>
</s:Body>
</s:Envelope>
メッセージ本文の <Add>
要素は、 n1
パラメーターと n2
パラメーターをラップします。 これに対して、ラップされていないモードでの同様のメッセージのサンプルを次に示します。
<s:Envelope
xmlns:s="http://www.w3.org/2003/05/soap-envelope"
xmlns:a="http://schemas.xmlsoap.org/ws/2005/08/addressing">
<s:Header>
….
</s:Header>
<s:Body>
<n1 xmlns="http://Microsoft.ServiceModel.Samples">100</n1>
<n2 xmlns="http://Microsoft.ServiceModel.Samples">15.99</n2>
</s:Body>
</s:Envelope>
ラップされていないメッセージは、格納要素内の n1
パラメータおよび n2
パラメータをラップしません。これらのパラメータは、SOAP 本文要素の直接の子になります。
注
このサンプルのセットアップ手順とビルド手順は、このトピックの最後にあります。
このサンプルでは、次のサンプル コードに示すように、 MessageContractAttribute をサービス操作パラメーターの型と戻り値の型に適用することで、ラップされていないメッセージが作成されます。
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface ICalculator
{
[OperationContract]
ResponseMessage Add(RequestMessage request);
[OperationContract]
ResponseMessage Subtract(RequestMessage request);
[OperationContract]
ResponseMessage Multiply(RequestMessage request);
[OperationContract]
ResponseMessage Divide(RequestMessage request);
}
//setting IsWrapped to false means the n1 and n2
//members will be direct children of the soap body element
[MessageContract(IsWrapped = false)]
public class RequestMessage
{
[MessageBodyMember]
private double n1;
[MessageBodyMember]
private double n2;
//…
}
//setting IsWrapped to false means the result
//member will be a direct child of the soap body element
[MessageContract(IsWrapped = false)]
public class ResponseMessage
{
[MessageBodyMember]
private double result;
//…
}
送受信されているメッセージを確認できるように、このサンプルではトレースを使用します。 さらに、ログに記録するメッセージの数を減らすために、 WSHttpBinding はセキュリティなしで構成されています。
結果のトレース ログ (c:\logs\Message.log) は、 サービス トレース ビューアー ツール (SvcTraceViewer.exe) を使用して表示できます。 メッセージの内容を表示するには、サービス トレース ビューアー ツールの左側と右側の両方のウィンドウで [ メッセージ ] を選択します。 このサンプルのトレース ログは、C:\LOGS フォルダーに生成されるように構成されています。 サンプルを実行する前にこのフォルダーを作成し、このディレクトリに対するネットワーク サービスの書き込みアクセス許可をユーザーに付与します。
サンプルを設定、ビルド、実行するには
Windows Communication Foundation サンプル のOne-Time セットアップ手順を実行していることを確認します。
メッセージをログに記録するための C:\LOGS ディレクトリを作成します。 このディレクトリに対するネットワーク サービスの書き込みアクセス許可をユーザーに付与します。
ソリューションの C# または Visual Basic .NET エディションをビルドするには、「Windows Communication Foundation サンプルのビルド」の手順に従います。
単一または複数のコンピューター間の構成でサンプルを実行するには、「Windows Communication Foundation Samplesの実行」の手順に従います。