Leer en inglés

Compartir a través de


CallContext Clase

Definición

Proporciona un conjunto de propiedades que se incluyen con la ruta de acceso del código de ejecución. Esta clase no puede heredarse.

C#
[System.Serializable]
public sealed class CallContext
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class CallContext
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Security.SecurityCritical]
public sealed class CallContext
Herencia
CallContext
Atributos

Ejemplos

En el ejemplo de código siguiente se muestra el uso de la CallContext clase para transmitir objetos de entidad de seguridad e identidad a una ubicación remota para la identificación. Para ver el código de la LogicalCallContextData clase usada en este ejemplo, vea el ejemplo de la ILogicalThreadAffinative interfaz . Para ver el código de la HelloServiceClass clase usada en este ejemplo, vea el ejemplo del GetData método . Para ver el código de la clase de servidor usada en este ejemplo, vea el ejemplo de la RegisterActivatedServiceType clase .

C#
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using System.Runtime.Remoting.Messaging;
using System.Security.Principal;
using System.Security.Permissions;

public class ClientClass {
   public static void Main() {

      GenericIdentity ident = new GenericIdentity("Bob");
      GenericPrincipal prpal = new GenericPrincipal(ident,
                                                    new string[] {"Level1"});
      LogicalCallContextData data = new LogicalCallContextData(prpal);

      //Enter data into the CallContext
      CallContext.SetData("test data", data);

      Console.WriteLine(data.numOfAccesses);

      ChannelServices.RegisterChannel(new TcpChannel());

      RemotingConfiguration.RegisterActivatedClientType(typeof(HelloServiceClass),
                                                        "tcp://localhost:8082");

      HelloServiceClass service = new HelloServiceClass();

      if(service == null) {
          Console.WriteLine("Could not locate server.");
          return;
      }

      // call remote method
      Console.WriteLine();
      Console.WriteLine("Calling remote object");
      Console.WriteLine(service.HelloMethod("Caveman"));
      Console.WriteLine(service.HelloMethod("Spaceman"));
      Console.WriteLine(service.HelloMethod("Bob"));
      Console.WriteLine("Finished remote object call");
      Console.WriteLine();

      //Extract the returned data from the call context
      LogicalCallContextData returnedData =
         (LogicalCallContextData)CallContext.GetData("test data");

      Console.WriteLine(data.numOfAccesses);
      Console.WriteLine(returnedData.numOfAccesses);
   }
}

Comentarios

CallContext es un objeto de colección especializado similar a un almacenamiento local de subprocesos para llamadas de método y proporciona ranuras de datos únicas para cada subproceso lógico de ejecución. Las ranuras no se comparten entre contextos de llamada en otros subprocesos lógicos. Los objetos se pueden agregar a a CallContext medida que viaja hacia abajo y hace una copia de seguridad de la ruta de acceso del código de ejecución y se examinan por varios objetos a lo largo de la ruta de acceso.

Cuando se realiza una llamada de método remoto a un objeto en otro AppDomain, la CallContext clase genera una LogicalCallContext instancia que viaja junto con la llamada remota. Solo los objetos que exponen la ILogicalThreadAffinative interfaz y se almacenan en CallContext se propagan fuera de AppDomain en .LogicalCallContext Los objetos que no admiten esta interfaz no se transmiten en LogicalCallContext instancias con llamadas de método remoto.

Nota

Todos los métodos de CallContext son estáticos y operan en el contexto de llamada en el actual Thread.

Nota

Esta clase realiza una demanda de vínculo. Se produce una SecurityException excepción si el llamador inmediato no tiene permiso de infraestructura. Consulte Peticiones de vínculo para obtener más información.

Propiedades

HostContext

Obtiene o establece el contexto del host asociado al subproceso actual.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
FreeNamedDataSlot(String)

Vacía una ranura de datos con el nombre especificado.

GetData(String)

Recupera un objeto con el nombre especificado de CallContext.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetHeaders()

Devuelve los encabezados que se envían junto con la llamada al método.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
LogicalGetData(String)

Recupera un objeto con el nombre especificado del contexto de llamada lógico.

LogicalSetData(String, Object)

Almacena un objeto determinado en el contexto de llamada lógico y lo asocia al nombre especificado.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
SetData(String, Object)

Almacena un objeto dado y lo asocia al nombre especificado.

SetHeaders(Header[])

Establece los encabezados que se envían junto con la llamada al método.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Producto Versiones
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Consulte también