SoapClientMessage 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示 XML Web Service 用戶端在特定 SoapMessageStage 所傳送之 SOAP 要求或所接收之 SOAP 回應中的資料。 此類別無法獲得繼承。
public ref class SoapClientMessage sealed : System::Web::Services::Protocols::SoapMessage
public sealed class SoapClientMessage : System.Web.Services.Protocols.SoapMessage
type SoapClientMessage = class
inherit SoapMessage
Public NotInheritable Class SoapClientMessage
Inherits SoapMessage
- 繼承
範例
下列程式碼片段是 SOAP 延伸模組的一部分,可記錄 XML Web 服務用戶端所傳送和接收的 SOAP 訊息。 這個特定片段會藉由將 的屬性 SoapClientMessage 寫入至記錄檔,以處理 SoapClientMessage 傳遞至 SoapExtension.ProcessMessage SOAP 延伸模組的 方法。
// Process the SOAP message received and write to a log file.
void ProcessMessage( SoapMessage^ message )
{
switch ( message->Stage )
{
case SoapMessageStage::BeforeSerialize:
break;
case SoapMessageStage::AfterSerialize:
WriteOutput( dynamic_cast<SoapClientMessage^>(message) );
break;
case SoapMessageStage::BeforeDeserialize:
WriteInput( dynamic_cast<SoapClientMessage^>(message) );
break;
case SoapMessageStage::AfterDeserialize:
break;
default:
throw gcnew Exception( "invalid stage" );
}
}
// Write the contents of the outgoing SOAP message to the log file.
void WriteOutput( SoapClientMessage^ message )
{
newStream->Position = 0;
FileStream^ myFileStream = gcnew FileStream( filename, FileMode::Append,
FileAccess::Write );
StreamWriter^ myStreamWriter = gcnew StreamWriter( myFileStream );
myStreamWriter->WriteLine(
"================================== Request at {0}", DateTime::Now );
// Print to the log file the request header field for SoapAction header.
myStreamWriter->WriteLine( "The SoapAction Http request header field is: " );
myStreamWriter->WriteLine( "\t{0}", message->Action );
// Print to the log file the type of the client that invoked
// the XML Web service method.
myStreamWriter->WriteLine( "The type of the client is: " );
if ( (message->Client->GetType())->Equals( typeid<MathSvc^> ) )
{
myStreamWriter->WriteLine( "\tMathSvc" );
}
// Print to the log file the method invoked by the client.
myStreamWriter->WriteLine(
"The method that has been invoked by the client is:" );
myStreamWriter->WriteLine( "\t{0}", message->MethodInfo->Name );
// Print to the log file if the method invoked is OneWay.
if ( message->OneWay )
{
myStreamWriter->WriteLine(
"The client doesn't wait for the server to finish processing" );
}
else
{
myStreamWriter->WriteLine(
"The client waits for the server to finish processing" );
}
// Print to the log file the URL of the site that provides
// implementation of the method.
myStreamWriter->WriteLine(
"The URL of the XML Web service method that has been requested is: " );
myStreamWriter->WriteLine( "\t{0}", message->Url );
myStreamWriter->WriteLine( "The contents of the SOAP envelope are: " );
myStreamWriter->Flush();
// Copy the contents of one stream to another.
Copy( newStream, myFileStream );
myFileStream->Close();
newStream->Position = 0;
// Copy the contents of one stream to another.
Copy( newStream, oldStream );
}
// Process the SOAP message received and write to a log file.
public override void ProcessMessage(SoapMessage message)
{
switch (message.Stage)
{
case SoapMessageStage.BeforeSerialize:
break;
case SoapMessageStage.AfterSerialize:
WriteOutput((SoapClientMessage)message);
break;
case SoapMessageStage.BeforeDeserialize:
WriteInput((SoapClientMessage)message);
break;
case SoapMessageStage.AfterDeserialize:
break;
default:
throw new Exception("invalid stage");
}
}
// Write the contents of the outgoing SOAP message to the log file.
public void WriteOutput(SoapClientMessage message)
{
newStream.Position = 0;
FileStream myFileStream = new FileStream(filename, FileMode.Append,
FileAccess.Write);
StreamWriter myStreamWriter = new StreamWriter(myFileStream);
myStreamWriter.WriteLine(
"================================== Request at "
+ DateTime.Now);
// Print to the log file the request header field for SoapAction header.
myStreamWriter.WriteLine("The SoapAction Http request header field is: ");
myStreamWriter.WriteLine("\t" + message.Action);
// Print to the log file the type of the client that invoked
// the XML Web service method.
myStreamWriter.WriteLine("The type of the client is: ");
if((message.Client.GetType()).Equals(typeof(MathSvc)))
myStreamWriter.WriteLine("\tMathSvc");
// Print to the log file the method invoked by the client.
myStreamWriter.WriteLine(
"The method that has been invoked by the client is:");
myStreamWriter.WriteLine("\t" + message.MethodInfo.Name);
// Print to the log file if the method invoked is OneWay.
if(message.OneWay)
myStreamWriter.WriteLine(
"The client doesn't wait for the server to finish processing");
else
myStreamWriter.WriteLine(
"The client waits for the server to finish processing");
// Print to the log file the URL of the site that provides
// implementation of the method.
myStreamWriter.WriteLine(
"The URL of the XML Web service method that has been requested is: ");
myStreamWriter.WriteLine("\t" + message.Url);
myStreamWriter.WriteLine("The contents of the SOAP envelope are: ");
myStreamWriter.Flush();
// Copy the contents of one stream to another.
Copy(newStream, myFileStream);
myFileStream.Close();
newStream.Position = 0;
// Copy the contents of one stream to another.
Copy(newStream, oldStream);
}
' Process the SOAP message received and write to a log file.
Public Overrides Sub ProcessMessage(message As SoapMessage)
Select Case message.Stage
Case SoapMessageStage.BeforeSerialize
Case SoapMessageStage.AfterSerialize
WriteOutput(CType(message, SoapClientMessage))
Case SoapMessageStage.BeforeDeserialize
WriteInput(CType(message, SoapClientMessage))
Case SoapMessageStage.AfterDeserialize
Case Else
Throw New Exception("invalid stage")
End Select
End Sub
' Write the contents of the outgoing SOAP message to the log file.
Public Sub WriteOutput(message As SoapClientMessage)
newStream.Position = 0
Dim myFileStream As New FileStream(filename, FileMode.Append, _
FileAccess.Write)
Dim myStreamWriter As New StreamWriter(myFileStream)
myStreamWriter.WriteLine( _
"================================== Request at " & DateTime.Now)
' Print to the log file the request header field for SoapAction header.
myStreamWriter.WriteLine("The SoapAction Http request header field is: ")
myStreamWriter.WriteLine(ControlChars.Tab & message.Action)
' Print to the log file the type of the client that invoked
' the XML Web service method.
myStreamWriter.WriteLine("The type of the client is: ")
If message.Client.GetType().Equals(GetType(MathSvc)) Then
myStreamWriter.WriteLine(ControlChars.Tab & "MathSvc")
End If
' Print to the log file the method invoked by the client.
myStreamWriter.WriteLine( _
"The method that has been invoked by the client is:")
myStreamWriter.WriteLine(ControlChars.Tab & message.MethodInfo.Name)
' Print to the log file if the method invoked is OneWay.
If message.OneWay Then
myStreamWriter.WriteLine( _
"The client doesn't wait for the server to finish processing")
Else
myStreamWriter.WriteLine( _
"The client waits for the server to finish processing")
End If
' Print to the log file the URL of the site that provides
' implementation of the method.
myStreamWriter.WriteLine( _
"The url of the XML Web service method that has been requested is: ")
myStreamWriter.WriteLine(ControlChars.Tab & message.Url)
myStreamWriter.WriteLine("The contents of the SOAP envelope are: ")
myStreamWriter.Flush()
' Copy the contents of one stream to another.
Copy(newStream, myFileStream)
myStreamWriter.Close()
myFileStream.Close()
newStream.Position = 0
' Copy the contents of one stream to another.
Copy(newStream, oldStream)
End Sub
屬性
Action |
取得 SOAP 要求或 SOAP 回應的 |
Client |
取得用戶端 Proxy 類別的執行個體,該類別衍生自 SoapHttpClientProtocol。 |
ContentEncoding |
取得或設定 |
ContentType |
取得或設定 SOAP 要求或 SOAP 回應的 HTTP |
Exception |
取得 SoapException,其因呼叫 XML Web Service 方法而造成的。 (繼承來源 SoapMessage) |
Headers |
套用至目前 SOAP 要求或 SOAP 回應的 SOAP 標頭集合。 (繼承來源 SoapMessage) |
MethodInfo |
取得 SOAP 要求所要的 XML Web Service 方法之方法原型 (Prototype) 表示。 |
OneWay |
取得值,指出用戶端是否等候伺服器完成 XML Web Service 方法的處理。 |
SoapVersion |
取得用來與 XML Web Service 通訊的 SOAP 通訊協定版本。 |
SoapVersion |
取得用來與 XML Web Service 通訊的 SOAP 通訊協定版本。 (繼承來源 SoapMessage) |
Stage |
取得 SoapMessageStage 的 SoapMessage。 (繼承來源 SoapMessage) |
Stream |
取得以 Stream 形式表示的 SOAP 要求或 SOAP 回應的資料。 (繼承來源 SoapMessage) |
Url |
取得 XML Web Service 的 URL。 |
方法
EnsureInStage() |
當在衍生類別中覆寫時,判斷提示 (Assert) 目前的 SoapMessageStage 是可以取得 in 參數的階段。 (繼承來源 SoapMessage) |
EnsureOutStage() |
當在衍生類別中覆寫時,判斷提示目前的 SoapMessageStage 階段是可以取得 out 參數的階段。 (繼承來源 SoapMessage) |
EnsureStage(SoapMessageStage) |
確認呼叫 XML Web Service 方法的 SoapMessageStage 是傳入的階段。 如果目前的處理階段不是傳入的其中一個階段,則擲回例外狀況。 (繼承來源 SoapMessage) |
Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
GetHashCode() |
做為預設雜湊函式。 (繼承來源 Object) |
GetInParameterValue(Int32) |
在指定的索引處取得傳入 XML Web Service 方法的參數。 (繼承來源 SoapMessage) |
GetOutParameterValue(Int32) |
在指定索引處取得傳入 XML Web Service 方法的 out 參數。 (繼承來源 SoapMessage) |
GetReturnValue() |
取得 XML Web Service 方法的傳回值。 (繼承來源 SoapMessage) |
GetType() |
取得目前執行個體的 Type。 (繼承來源 Object) |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
ToString() |
傳回代表目前物件的字串。 (繼承來源 Object) |