このサンプルでは、ラップされていないメッセージを示します。既定では、メッセージの本文は、サービス操作に渡されるパラメータがラップされるように書式設定されます。ラップされたモードでの ICalculator
サービスへの Add
要求メッセージのサンプルを次に示します。
<s:Envelope
xmlns:s=http://www.w3.org/2003/05/soap-envelope
xmlns:a="https://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="https://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>
</MessageLogTraceRecord>
ラップされていないメッセージは、格納要素内の 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 フォルダに生成されるように構成されています。サンプルの実行前にこのフォルダを作成し、ユーザー Network Service にそのディレクトリへの書き込み権限を与えます。
サンプルを設定、ビルド、および実行するには
「Windows Communication Foundation サンプルの 1 回限りのセットアップの手順」を実行したことを確認します。
メッセージのログ記録用に C:\LOGS ディレクトリを作成します。ユーザー Network Service にそのディレクトリの書き込み権限を与えます。
ソリューションの C# 版または Visual Basic .NET 版をビルドするには、「Windows Communication Foundation サンプルのビルド」の手順に従います。
単一コンピューター構成か複数コンピューター構成かに応じて、「Running the Windows Communication Foundation Samples」の手順に従います。
![]() |
---|
サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の (既定の) ディレクトリを確認してください。
<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\Contract\Message\Unwrapped
|