SoapExtension.ChainStream(Stream) メソッド


派生クラスでオーバーライドされると、SOAP 要求または応答を格納しているメモリ バッファーに SOAP 拡張機能からアクセスできます。When overridden in a derived class, allows a SOAP extension access to the memory buffer containing the SOAP request or response.

 virtual System::IO::Stream ^ ChainStream(System::IO::Stream ^ stream);
public virtual System.IO.Stream ChainStream (System.IO.Stream stream);
abstract member ChainStream : System.IO.Stream -> System.IO.Stream
override this.ChainStream : System.IO.Stream -> System.IO.Stream
Public Overridable Function ChainStream (stream As Stream) As Stream



SOAP 要求または応答を格納しているメモリ バッファー。A memory buffer containing the SOAP request or response.


この SOAP 拡張機能により変更できる新しいメモリ バッファーを表す StreamA Stream representing a new memory buffer that this SOAP extension can modify.

次の例では、ChainStream に渡された StreamChainStream から返された Stream の両方を、メンバー変数 oldStreamnewStreamにそれぞれ保存します。The following example saves both the Stream passed into ChainStream and the Stream returned from ChainStream in the member variables oldStream and newStream, respectively.

   virtual Stream^ ChainStream( Stream^ stream ) override
      oldStream = stream;
      newStream = gcnew MemoryStream;
      return newStream;
public override Stream ChainStream( Stream stream ){
    oldStream = stream;
    newStream = new MemoryStream();
    return newStream;
Public Overrides Function ChainStream(stream As Stream) As Stream
    m_oldStream = stream
    m_newStream = New MemoryStream()
    Return m_newStream
End Function


ChainStream により、優先順位の最も高い SOAP 拡張機能で、ネットワーク経由で送受信される SOAP メッセージに最も近い実際のデータを変更できます。ChainStream ensures that SOAP extensions with the highest priority can modify the actual data closest to the SOAP message sent or returned over the wire.

SOAP 拡張機能では、ChainStream に渡された StreamChainStreamから返された Stream の参照を保存する必要があります。SOAP extensions should save references of the Stream passed into ChainStream and the Stream returned from ChainStream. SOAP 拡張機能が XML Web サービスメソッドを使用して実行するように構成されている場合、ChainStream に渡される Stream には BeforeDeserializeSoapMessageStageでシリアル化された SOAP 要求が含まれます。If the SOAP extension is configured to run with a XML Web service method, the Stream passed into ChainStream contains the serialized SOAP request at the BeforeDeserializeSoapMessageStage. 同様に、シリアル化が発生したときに ChainStream から返される Stream 参照がに書き込まれます。これにより、シリアル化された SOAP 応答が AfterSerializeSoapMessageStageに格納されます。Similarly, the Stream reference returned from ChainStream is written into when the serialization occurs and thus contains the serialized SOAP response in the AfterSerializeSoapMessageStage.