SoapClientMessage 类

定义

表示 XML Web services 客户端在特定的 SoapMessageStage 发送的 SOAP 请求或收到的 SOAP 响应中的数据。Represents the data in a SOAP request sent or a SOAP response received by an XML Web service client at a specific SoapMessageStage. 此类不能被继承。This class cannot be inherited.

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
继承
SoapClientMessage

示例

下面的代码片段是 SOAP 扩展的一部分, 它记录了 XML Web service 客户端发送和接收的 SOAP 消息。The following code fragment is part of a SOAP extension that logs the SOAP messages sent and received by an XML Web service client. 此特定片段SoapClientMessage 通过将SoapExtension.ProcessMessage的属性写入日志文件来处理传递给SOAP扩展的方法的。SoapClientMessageThis specific fragment processes the SoapClientMessage passed into the SoapExtension.ProcessMessage method of the SOAP extension by writing properties of the SoapClientMessage to the log file.

// 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 响应的 SOAPAction HTTP 请求标头字段。Gets the SOAPAction HTTP request header field for the SOAP request or SOAP response.

Client

获取从 SoapHttpClientProtocol 派生的客户端代理类的实例。Gets an instance of the client proxy class, which derives from SoapHttpClientProtocol.

ContentEncoding

获取或设置 Content-Encoding HTTP 标头的内容。Gets or sets the contents of the Content-Encoding HTTP header.

(继承自 SoapMessage)
ContentType

获取或设置 SOAP 请求或 SOAP 响应的 HTTP Content-TypeGets or sets the HTTP Content-Type of the SOAP request or SOAP response.

(继承自 SoapMessage)
Exception

从对 XML Web services 方法的调用中获取 SoapExceptionGets the SoapException from the call to the XML Web service method.

(继承自 SoapMessage)
Headers

应用于当前 SOAP 请求或 SOAP 响应的 SOAP 标头的集合。A collection of the SOAP headers applied to the current SOAP request or SOAP response.

(继承自 SoapMessage)
MethodInfo

获取要为其发出 SOAP 请求的 XML Web services 方法的方法原型的表示形式。Gets a representation of the method prototype of the XML Web service method for which the SOAP request is intended.

OneWay

获取一个值,该值指示客户端是否等待服务器处理完 XML Web services 方法。Gets a value indicating whether the client waits for the server to finish processing an XML Web service method.

SoapVersion

获取用于与 XML Web services 进行通信的 SOAP 协议的版本。Gets the version of the SOAP protocol used to communicate with the XML Web service.

Stage

获取 SoapMessageStageSoapMessageGets the SoapMessageStage of the SoapMessage.

(继承自 SoapMessage)
Stream

获取以 Stream 形式表示 SOAP 请求或 SOAP 响应的数据。Gets the data representing the SOAP request or SOAP response in the form of a Stream.

(继承自 SoapMessage)
Url

获取 XML Web services 的 URL。Gets the URL of the XML Web service.

方法

EnsureInStage()

当在派生类中被重写时,断言当前 SoapMessageStage 为可以使用 in 参数的阶段。When overridden in a derived class, asserts that the current SoapMessageStage is a stage where in parameters are available.

(继承自 SoapMessage)
EnsureOutStage()

当在派生类中被重写时,断言当前 SoapMessageStage 阶段是不可以使用 out 参数的阶段。When overridden in a derived class, asserts that the current SoapMessageStage stage is a stage where out parameters are available.

(继承自 SoapMessage)
EnsureStage(SoapMessageStage)

确保对 XML Web services 方法的调用的 SoapMessageStage 是传入的阶段。Ensures that the SoapMessageStage of the call to the XML Web service method is the stage or stages passed in. 如果当前处理阶段不是传入的阶段之一,则引发异常。If the current processing stage is not one of the stages passed in, an exception is thrown.

(继承自 SoapMessage)
Equals(Object)

确定指定的对象是否等于当前对象。Determines whether the specified object is equal to the current object.

(继承自 Object)
GetHashCode()

用作默认哈希函数。Serves as the default hash function.

(继承自 Object)
GetInParameterValue(Int32)

在指定索引处获取传递到 XML Web services 方法中的参数。Gets the parameter passed into the XML Web service method at the specified index.

(继承自 SoapMessage)
GetOutParameterValue(Int32)

在指定索引处获取传递到 XML Web services 方法中的输出参数。Gets the out parameter passed into the XML Web service method at the specified index.

(继承自 SoapMessage)
GetReturnValue()

获取 XML Web services 方法的返回值。Gets the return value of an XML Web service method.

(继承自 SoapMessage)
GetType()

获取当前实例的 TypeGets the Type of the current instance.

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。Creates a shallow copy of the current Object.

(继承自 Object)
ToString()

返回一个表示当前对象的 string。Returns a string that represents the current object.

(继承自 Object)

适用于