SoapMessage クラス
アセンブリ: mscorlib (mscorlib.dll 内)

<SerializableAttribute> _ <ComVisibleAttribute(True)> _ Public Class SoapMessage Implements ISoapMessage

SoapMessage がシリアル化グラフのルート オブジェクトの場合は、SOAP が RPC (リモート プロシージャ コール) 形式で生成され、メソッド呼び出しのパラメータの種類を指定するために SoapMessage オブジェクトが使用されます。逆シリアル化時に、SoapFormatter.TopObject プロパティに、このオブジェクトを設定できます。

System.Runtime.Serialization.Formatters.SoapMessage


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


SoapMessage クラス
アセンブリ: System.Web.Services (system.web.services.dll 内)


SoapMessage クラスは主に SOAP 拡張機能で使用し、SOAP 要求または SOAP 応答のデータを表します。ProcessMessage メソッドを呼び出すと、それぞれの SoapMessageStage で SoapExtension が SoapMessage を受け取ります。SoapMessage の処理方法の選択は、特定の SOAP 拡張機能によって行われます。共通の SOAP 拡張機能には、暗号化と圧縮の機能があります。
SOAP 拡張機能は、ASP.NET で作成された XML Web サービス メソッド、XML Web サービス クライアントのいずれか、または両方に適用できます。SOAP 拡張機能を XML Web サービス メソッドに適用すると、ProcessMessage メソッドは、SoapMessage から派生する SoapServerMessage のインスタンスを受け取ります。同様に、SOAP 拡張機能を XML Web サービス クライアントに適用すると、ProcessMessage が SoapClientMessage のインスタンスを受け取ります。

' Process the SOAP message received and write to log file. Public Overrides Sub ProcessMessage(message As SoapMessage) Select Case message.Stage Case SoapMessageStage.BeforeSerialize WriteOutputBeforeSerialize(message) Case SoapMessageStage.AfterSerialize WriteOutputAfterSerialize(message) Case SoapMessageStage.BeforeDeserialize WriteInputBeforeDeserialize(message) Case SoapMessageStage.AfterDeserialize WriteInputAfterDeserialize(message) Case Else Throw New Exception("invalid stage") End Select End Sub 'ProcessMessage ' Write the contents of the outgoing SOAP message to the log file. Public Sub WriteOutputBeforeSerialize(message As SoapMessage) Dim myFileStream As New FileStream( _ filename, FileMode.Append, FileAccess.Write) Dim myStreamWriter As New StreamWriter(myFileStream) myStreamWriter.WriteLine( _ "================================== Request at " & _ DateTime.Now) myStreamWriter.WriteLine("The method that has been invoked is: ") myStreamWriter.WriteLine(ControlChars.Tab & message.MethodInfo.ToString()) myStreamWriter.WriteLine("The contents of the SOAPAction HTTP header is:") myStreamWriter.WriteLine(ControlChars.Tab & message.Action) myStreamWriter.WriteLine("The contents of HTTP Content-type header is:") myStreamWriter.WriteLine(ControlChars.Tab & message.ContentType) If message.OneWay Then myStreamWriter.WriteLine( _ "The method invoked on the client shall not wait" & _ " till the server finishes") Else myStreamWriter.WriteLine( _ "The method invoked on the client shall wait" & _ " till the server finishes") End If myStreamWriter.WriteLine( _ "The site where the XML Web service is available is: ") myStreamWriter.WriteLine(ControlChars.Tab & message.Url) myStreamWriter.WriteLine("The values of the in parameters are:") myStreamWriter.WriteLine("Value of first in parameter: {0}", _ message.GetInParameterValue(0)) myStreamWriter.WriteLine("Value of second in parameter: {0}", _ message.GetInParameterValue(1)) myStreamWriter.WriteLine() myStreamWriter.Flush() myStreamWriter.Close() myFileStream.Close() End Sub 'WriteOutputBeforeSerialize ' Write the contents of the incoming SOAP message to the log file. Public Sub WriteInputAfterDeserialize(message As SoapMessage) Dim myFileStream As _ New FileStream(filename, FileMode.Append, FileAccess.Write) Dim myStreamWriter As New StreamWriter(myFileStream) myStreamWriter.WriteLine() myStreamWriter.WriteLine("The values of the out parameter are:") myStreamWriter.WriteLine("The value of the out parameter is: {0}", _ message.GetOutParameterValue(0)) myStreamWriter.WriteLine("The values of the return parameter are:") myStreamWriter.WriteLine("The value of the return parameter is: {0}", _ message.GetReturnValue()) myStreamWriter.Flush() myStreamWriter.Close() myFileStream.Close() End Sub 'WriteInputAfterDeserialize
// Process the SOAP message received and write to log file. public override void ProcessMessage(SoapMessage message) { switch (message.Stage) { case SoapMessageStage.BeforeSerialize: WriteOutputBeforeSerialize(message); break; case SoapMessageStage.AfterSerialize: WriteOutputAfterSerialize(message); break; case SoapMessageStage.BeforeDeserialize: WriteInputBeforeDeserialize(message); break; case SoapMessageStage.AfterDeserialize: WriteInputAfterDeserialize(message); break; default: throw new Exception("invalid stage"); } } // Write the contents of the outgoing SOAP message to the log file. public void WriteOutputBeforeSerialize(SoapMessage message) { FileStream myFileStream = new FileStream(filename, FileMode.Append, FileAccess.Write); StreamWriter myStreamWriter = new StreamWriter(myFileStream); myStreamWriter.WriteLine("================================== Request at " + DateTime.Now); myStreamWriter.WriteLine("The method that has been invoked is: "); myStreamWriter.WriteLine("\t" + message.MethodInfo); myStreamWriter.WriteLine( "The contents of the SOAPAction HTTP header is:"); myStreamWriter.WriteLine("\t" + message.Action); myStreamWriter.WriteLine("The contents of HTTP Content-type header is:"); myStreamWriter.WriteLine("\t" + message.ContentType); if(message.OneWay) myStreamWriter.WriteLine( "The method invoked on the client shall not wait" + " till the server finishes"); else myStreamWriter.WriteLine( "The method invoked on the client shall wait" + " till the server finishes"); myStreamWriter.WriteLine( "The site where the XML Web service is available is:"); myStreamWriter.WriteLine("\t" + message.Url); myStreamWriter.WriteLine("The values of the in parameters are:"); myStreamWriter.WriteLine("Value of first in parameter: {0}", message.GetInParameterValue(0)); myStreamWriter.WriteLine("Value of second in parameter: {0}", message.GetInParameterValue(1)); myStreamWriter.WriteLine(); myStreamWriter.Flush(); myStreamWriter.Close(); myFileStream.Close(); } // Write the contents of the incoming SOAP message to the log file. public void WriteInputAfterDeserialize(SoapMessage message) { FileStream myFileStream = new FileStream(filename, FileMode.Append, FileAccess.Write); StreamWriter myStreamWriter = new StreamWriter(myFileStream); myStreamWriter.WriteLine(); myStreamWriter.WriteLine("The values of the out parameter are:"); myStreamWriter.WriteLine("The value of the out parameter is: {0}", message.GetOutParameterValue(0)); myStreamWriter.WriteLine("The values of the return parameter are:"); myStreamWriter.WriteLine("The value of the return parameter is: {0}", message.GetReturnValue()); myStreamWriter.Flush(); myStreamWriter.Close(); myFileStream.Close(); }
// Process the SOAP message received and write to log file. virtual void ProcessMessage( SoapMessage^ message ) override { switch ( message->Stage ) { case SoapMessageStage::BeforeSerialize: WriteOutputBeforeSerialize( message ); break; case SoapMessageStage::AfterSerialize: WriteOutputAfterSerialize( message ); break; case SoapMessageStage::BeforeDeserialize: WriteInputBeforeDeserialize( message ); break; case SoapMessageStage::AfterDeserialize: WriteInputAfterDeserialize( message ); break; default: throw gcnew Exception( "invalid stage" ); } } // Write the contents of the outgoing SOAP message to the log file. void WriteOutputBeforeSerialize( SoapMessage^ message ) { FileStream^ myFileStream = gcnew FileStream( filename, FileMode::Append, FileAccess::Write ); StreamWriter^ myStreamWriter = gcnew StreamWriter( myFileStream ); myStreamWriter->WriteLine( "================================== Request at {0}", DateTime::Now ); myStreamWriter->WriteLine( "The method that has been invoked is: " ); myStreamWriter->WriteLine( "\t{0}", message->MethodInfo ); myStreamWriter->WriteLine( "The contents of the SOAPAction HTTP header is:" ); myStreamWriter->WriteLine( "\t{0}", message->Action ); myStreamWriter->WriteLine( "The contents of HTTP Content-type header is:" ); myStreamWriter->WriteLine( "\t{0}", message->ContentType ); if ( message->OneWay ) { myStreamWriter->WriteLine( "The method invoked on the client shall not wait" + " till the server finishes" ); } else { myStreamWriter->WriteLine( "The method invoked on the client shall wait" + " till the server finishes" ); } myStreamWriter->WriteLine( "The site where the XML Web service is available is:" ); myStreamWriter->WriteLine( "\t{0}", message->Url ); myStreamWriter->WriteLine( "The values of the in parameters are:" ); myStreamWriter->WriteLine( "Value of first in parameter: {0}", message->GetInParameterValue( 0 ) ); myStreamWriter->WriteLine( "Value of second in parameter: {0}", message->GetInParameterValue( 1 ) ); myStreamWriter->WriteLine(); myStreamWriter->Flush(); myStreamWriter->Close(); myFileStream->Close(); } // Write the contents of the incoming SOAP message to the log file. void WriteInputAfterDeserialize( SoapMessage^ message ) { FileStream^ myFileStream = gcnew FileStream( filename, FileMode::Append, FileAccess::Write ); StreamWriter^ myStreamWriter = gcnew StreamWriter( myFileStream ); myStreamWriter->WriteLine(); myStreamWriter->WriteLine( "The values of the out parameter are:" ); myStreamWriter->WriteLine( "The value of the out parameter is: {0}", message->GetOutParameterValue( 0 ) ); myStreamWriter->WriteLine( "The values of the return parameter are:" ); myStreamWriter->WriteLine( "The value of the return parameter is: {0}", message->GetReturnValue() ); myStreamWriter->Flush(); myStreamWriter->Close(); myFileStream->Close(); }
// Process the SOAP message received and write to log file. public void ProcessMessage(SoapMessage message) throws Exception { switch (message.get_Stage()) { case SoapMessageStage.BeforeSerialize: WriteOutputBeforeSerialize(message); break; case SoapMessageStage.AfterSerialize: WriteOutputAfterSerialize(message); break; case SoapMessageStage.BeforeDeserialize: WriteInputBeforeDeserialize(message); break; case SoapMessageStage.AfterDeserialize: WriteInputAfterDeserialize(message); break; default: throw new Exception("invalid stage"); } } //ProcessMessage // Write the contents of the outgoing SOAP message to the log file. public void WriteOutputBeforeSerialize(SoapMessage message) { FileStream myFileStream = new FileStream(fileName, FileMode.Append, FileAccess.Write); StreamWriter myStreamWriter = new StreamWriter(myFileStream); myStreamWriter.WriteLine("================================== " + "Request at " + DateTime.get_Now()); myStreamWriter.WriteLine("The method that has been invoked is: "); myStreamWriter.WriteLine("\t" + message.get_MethodInfo()); myStreamWriter.WriteLine("The contents of the SOAPAction HTTP " + "header is:"); myStreamWriter.WriteLine("\t" + message.get_Action()); myStreamWriter.WriteLine("The contents of HTTP Content-type " + "header is:"); myStreamWriter.WriteLine("\t" + message.get_ContentType()); if (message.get_OneWay()) { myStreamWriter.WriteLine("The method invoked on the client " + "shall not wait till the server finishes"); } else { myStreamWriter.WriteLine("The method invoked on the client " + "shall wait till the server finishes"); } myStreamWriter.WriteLine("The site where the XML Web service is " + "available is:"); myStreamWriter.WriteLine("\t" + message.get_Url()); myStreamWriter.WriteLine("The values of the in parameters are:"); myStreamWriter.WriteLine("Value of first in parameter: {0}", message. GetInParameterValue(0)); myStreamWriter.WriteLine("Value of second in parameter: {0}", message. GetInParameterValue(1)); myStreamWriter.WriteLine(); myStreamWriter.Flush(); myStreamWriter.Close(); myFileStream.Close(); } //WriteOutputBeforeSerialize // Write the contents of the incoming SOAP message to the log file. public void WriteInputAfterDeserialize(SoapMessage message) { FileStream myFileStream = new FileStream(fileName, FileMode.Append, FileAccess.Write); StreamWriter myStreamWriter = new StreamWriter(myFileStream); myStreamWriter.WriteLine(); myStreamWriter.WriteLine("The values of the out parameter are:"); myStreamWriter.WriteLine("The value of the out parameter is: {0}", message.GetOutParameterValue(0)); myStreamWriter.WriteLine("The values of the return parameter are:"); myStreamWriter.WriteLine("The value of the return parameter is: {0}", message.GetReturnValue()); myStreamWriter.Flush(); myStreamWriter.Close(); myFileStream.Close(); } //WriteInputAfterDeserialize

System.Web.Services.Protocols.SoapMessage
System.Web.Services.Protocols.SoapClientMessage
System.Web.Services.Protocols.SoapServerMessage


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- SoapMessage クラスのページへのリンク