次の方法で共有


IClientChannelSink.ProcessMessage メソッド

現在のシンクからのメッセージ処理を要求します。

Sub ProcessMessage( _
   ByVal msg As IMessage, _   ByVal requestHeaders As ITransportHeaders, _   ByVal requestStream As Stream, _   <Out()> ByRef responseHeaders As ITransportHeaders, _   <Out()> ByRef responseStream As Stream _)
[C#]
void ProcessMessage(
   IMessagemsg,ITransportHeadersrequestHeaders,StreamrequestStream,   out ITransportHeadersresponseHeaders,   out StreamresponseStream);
[C++]
void ProcessMessage(
   IMessage* msg,ITransportHeaders* requestHeaders,Stream* requestStream,   [   Out] ITransportHeaders** responseHeaders,   [   Out] Stream** responseStream);
[JScript]
function ProcessMessage(
   msg : IMessage,requestHeaders : ITransportHeaders,requestStream : Stream,responseHeaders : ITransportHeaders,responseStream : Stream);

パラメータ

  • msg
    処理するメッセージ。
  • requestHeaders
    サーバーに送信されるメッセージ ヘッダーに追加されるヘッダー。
  • requestStream
    転送シンクへのストリーム。
  • responseHeaders
    このメソッドが返されるときに、サーバーが返したヘッダーを保持している ITransportHeaders インターフェイスを格納します。このパラメータは初期化せずに渡されます。
  • responseStream
    このメソッドが返されるときに、転送シンクから返される Stream を格納します。このパラメータは初期化せずに渡されます。

例外

例外の種類 条件
SecurityException 直前の呼び出し元に、インフラストラクチャ アクセス許可がありません。

使用例

 
Public Function ProcessMessage(ByVal myServerChannelSinkStack As IServerChannelSinkStack, _
ByVal requestMsg As IMessage, ByVal requestHeaders As ITransportHeaders, ByVal requestStream As Stream, ByRef _
msg As IMessage, ByRef responseHeaders As ITransportHeaders, ByRef responseStream _
As Stream) As ServerProcessing Implements IServerChannelSink.ProcessMessage
         If myBoolEnabled Then
            LoggingHelper.PrintRequest(myTextWriterOutput, requestHeaders, requestStream)
         End If
         myServerChannelSinkStack.Push(Me, Nothing)
         Dim myServerProcessing As ServerProcessing = myNewNextSink.ProcessMessage( _
          myServerChannelSinkStack, requestMsg, requestHeaders, requestStream, msg, responseHeaders, responseStream)

         Console.WriteLine("ServerProcessing.Complete value is:   " + ServerProcessing.Complete.Tostring())
         Console.WriteLine("ServerProcessing.OneWay Value is:     " + ServerProcessing.OneWay.Tostring())
         Console.WriteLine("ServerProcessing.Async value is:      " + ServerProcessing.Async.Tostring())

         Select Case myServerProcessing
            Case ServerProcessing.Complete
               myServerChannelSinkStack.Pop(Me)
               If myBoolEnabled Then
LoggingHelper.PrintResponse(myTextWriterOutput, responseHeaders, responseStream)
               End If

            Case ServerProcessing.OneWay
               myServerChannelSinkStack.Pop(Me)

            Case ServerProcessing.Async
               myServerChannelSinkStack.Store(Me, Nothing)

         End Select
         Return myServerProcessing
      End Function 'ProcessMessage


[C#] 
public ServerProcessing ProcessMessage(IServerChannelSinkStack myServerChannelSinkStack,
   IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream,
   out IMessage msg, out ITransportHeaders responseHeaders,
   out Stream responseStream)
{
   if (myBoolEnabled)
      LoggingHelper.PrintRequest(myTextWriterOutput, requestHeaders, ref requestStream);

   myServerChannelSinkStack.Push(this, null);
   ServerProcessing myServerProcessing =
      myNewNextSink.ProcessMessage(myServerChannelSinkStack, requestMsg, requestHeaders, requestStream, out msg,
      out responseHeaders, out responseStream);

   Console.WriteLine("ServerProcessing.Complete value is:   " +ServerProcessing.Complete);
   Console.WriteLine("ServerProcessing.OneWay Value is:     " +ServerProcessing.OneWay);
   Console.WriteLine("ServerProcessing.Async value is:      " +ServerProcessing.Async);

   switch (myServerProcessing)
   {
      case ServerProcessing.Complete:
      {
         myServerChannelSinkStack.Pop(this);
         if (myBoolEnabled)
            LoggingHelper.PrintResponse(myTextWriterOutput, responseHeaders, ref responseStream);
         break;
      }

      case ServerProcessing.OneWay:
      {
         myServerChannelSinkStack.Pop(this);
         break;
      }

      case ServerProcessing.Async:
      {
         myServerChannelSinkStack.Store(this, null);
         break;
      }
   }
   return myServerProcessing;
}

[C++] 
public:
   ServerProcessing ProcessMessage(IServerChannelSinkStack* myServerChannelSinkStack,
      IMessage* requestMsg, ITransportHeaders* requestHeaders, Stream* requestStream,
      [Out]IMessage** msg, [Out]ITransportHeaders** responseHeaders,
      [Out]Stream** responseStream)
   {
      if (myBoolEnabled)
         LoggingHelper::PrintRequest(myTextWriterOutput, requestHeaders, &requestStream);

      myServerChannelSinkStack->Push(this, 0);
      ServerProcessing myServerProcessing =
         myNewNextSink->ProcessMessage(myServerChannelSinkStack, requestMsg, requestHeaders, requestStream, msg,
         responseHeaders, responseStream);

      Console::WriteLine(S"ServerProcessing.Complete value is:   {0}", __box(ServerProcessing::Complete));
      Console::WriteLine(S"ServerProcessing.OneWay Value is:     {0}", __box(ServerProcessing::OneWay));
      Console::WriteLine(S"ServerProcessing.Async value is:      {0}", __box(ServerProcessing::Async));

      switch (myServerProcessing)
      {
      case ServerProcessing::Complete:
         {
            myServerChannelSinkStack->Pop(this);
            if (myBoolEnabled)
               LoggingHelper::PrintResponse(myTextWriterOutput, *responseHeaders, responseStream);
            break;
         }

      case ServerProcessing::OneWay:
         {
            myServerChannelSinkStack->Pop(this);
            break;
         }

      case ServerProcessing::Async:
         {
            myServerChannelSinkStack->Store(this, 0);
            break;
         }
      }
      return myServerProcessing;
   }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

IClientChannelSink インターフェイス | IClientChannelSink メンバ | System.Runtime.Remoting.Channels 名前空間 | シンクとシンク チェイン