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 セキュリティ:
- SecurityPermission (インフラストラクチャ コードを操作するために必要なアクセス許可)要求値: SecurityAction.LinkDemand; アクセス許可値: SecurityPermissionFlag.Infrastructure
参照
IClientChannelSink インターフェイス | IClientChannelSink メンバ | System.Runtime.Remoting.Channels 名前空間 | シンクとシンク チェイン