Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

IServerChannelSink-Schnittstelle

 

Veröffentlicht: Oktober 2016

Stellt Methoden für die Sicherheit und für Transportsenken verwendet.

Namespace:   System.Runtime.Remoting.Channels
Assembly:  mscorlib (in mscorlib.dll)

[ComVisibleAttribute(true)]
public interface IServerChannelSink : IChannelSinkBase

NameBeschreibung
System_CAPS_pubpropertyNextChannelSink

Ruft die nächste Channelsenke in der Senkenkette ab.

System_CAPS_pubpropertyProperties

Ruft ein Wörterbuch, das über die Eigenschaften für die Senke zugegriffen werden kann.(Geerbt von „IChannelSinkBase“.)

NameBeschreibung
System_CAPS_pubmethodAsyncProcessResponse(IServerResponseChannelSinkStack, Object, IMessage, ITransportHeaders, Stream)

Fordert die Verarbeitung von der aktuellen Senke die Antwort von einem Methodenaufruf asynchron gesendet.

System_CAPS_pubmethodGetResponseStream(IServerResponseChannelSinkStack, Object, IMessage, ITransportHeaders)

Gibt die Stream in die bereitgestellte Antwortnachricht serialisiert werden.

System_CAPS_pubmethodProcessMessage(IServerChannelSinkStack, IMessage, ITransportHeaders, Stream, IMessage, ITransportHeaders, Stream)

Anforderungen des von der aktuellen Senke die Verarbeitung der Nachricht.

Channelsenken ermöglichen Sie den-Plug-in, mit dem Zugriff auf die zugrunde liegenden Nachrichten fließen über den Kanal sowie den Stream vom Transportmechanismus verwendet wird, um Nachrichten an ein Remoteobjekt senden können. Channelsenken sind in einer Kette von Channelsenkenanbietern miteinander verknüpft, und alle Kanalnachrichten fließen über diese Kette von senken, bevor die Meldung serialisiert und übertragen wird.

Im folgenden Codebeispiel wird eine Implementierung veranschaulicht die IServerChannelSink Schnittstelle.

using System;
using System.Collections;
using System.IO;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Messaging;
using System.Security.Permissions;

public class ServerSink : BaseChannelSinkWithProperties, IServerChannelSink
{

    // This class inherits from BaseChannelSinkWithPropertes
    // to get an implementation of IChannelSinkBase.


    // The next sink in the chain.
    private IServerChannelSink nextSink;

    public IServerChannelSink NextChannelSink
    {
        [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
        get
        {
            return(nextSink);
        }
    }

    [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
    public Stream GetResponseStream (IServerResponseChannelSinkStack sinkStack,
                                     Object state,
                                     IMessage message,
                                     ITransportHeaders responseHeaders)
    {
        return(null);
    }

    [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
    public ServerProcessing ProcessMessage (IServerChannelSinkStack sinkStack,
                                            IMessage requestMessage,
                                            ITransportHeaders requestHeaders,
                                            Stream requestStream,
                                            out IMessage responseMessage,
                                            out ITransportHeaders responseHeaders,
                                            out Stream responseStream)
    {

        // Hand off to the next sink for processing.
        sinkStack.Push(this, null);
        ServerProcessing status = nextSink.ProcessMessage(
          sinkStack, requestMessage, requestHeaders, requestStream,
          out responseMessage, out responseHeaders, out responseStream
        );

        // Print the response message properties.
        Console.WriteLine("---- Message from the server ----");
        IDictionary dictionary = responseMessage.Properties;
        foreach (Object key in dictionary.Keys)
        {
            Console.WriteLine("{0} = {1}", key, dictionary[key]);
        }
        Console.WriteLine("---------------------------------");

        return(status);
    } 

    [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
    public void AsyncProcessResponse (IServerResponseChannelSinkStack sinkStack,
                                      Object state,
                                      IMessage message,
                                      ITransportHeaders responseHeaders,
                                      Stream responseStream)
    {
        throw new NotImplementedException();
    }

    // Constructor
    [SecurityPermission(SecurityAction.LinkDemand)]
    public ServerSink (IServerChannelSink sink) {
      if (sink == null) throw new ArgumentNullException("sink");
      nextSink = sink;
    }


}

Siehe die IServerChannelSinkProvider Schnittstelle Dokumentation ein Beispiel für die entsprechende anbieterimplementierung.

SecurityPermission

for operating with infrastructure code. Demand value: F:System.Security.Permissions.SecurityAction.LinkDemand; Permission value: F:System.Security.Permissions.SecurityPermissionFlag.Infrastructure

.NET Framework
Verfügbar seit 1.1
Zurück zum Anfang
Anzeigen: