CallContext.GetData(String) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Recupera un objeto con el nombre especificado de CallContext.
public:
static System::Object ^ GetData(System::String ^ name);
public static object GetData (string name);
[System.Security.SecurityCritical]
public static object GetData (string name);
static member GetData : string -> obj
[<System.Security.SecurityCritical>]
static member GetData : string -> obj
Public Shared Function GetData (name As String) As Object
Parámetros
- name
- String
Nombre del elemento del contexto de llamada.
Devoluciones
Objeto del contexto de llamada asociado al nombre especificado.
- Atributos
Excepciones
El llamador inmediato no tiene permisos de infraestructura.
Ejemplos
En el GetData ejemplo de código siguiente se muestra el uso del método 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 clase de cliente usada en el ejemplo, vea el ejemplo de la CallContext clase . Para ver el código de la clase de servidor usada en este ejemplo, vea el ejemplo de la RegisterActivatedServiceType clase .
using namespace System;
using namespace System::Text;
using namespace System::Runtime::Remoting::Messaging;
using namespace System::Security::Principal;
using namespace System::Security::Permissions;
ref class LogicalCallContextData;
public ref class HelloServiceClass: public MarshalByRefObject
{
private:
static int n_instances;
int instanceNum;
public:
HelloServiceClass()
{
n_instances++;
instanceNum = n_instances;
Console::WriteLine( "{0} has been created. Instance # = {1}", this->GetType()->Name, instanceNum );
}
~HelloServiceClass()
{
Console::WriteLine( "Destroyed instance {0} of HelloServiceClass.", instanceNum );
}
[SecurityPermissionAttribute(SecurityAction::Demand, Flags=SecurityPermissionFlag::Infrastructure)]
String^ HelloMethod( String^ name )
{
//Extract the call context data
LogicalCallContextData^ data = dynamic_cast<LogicalCallContextData^>(CallContext::GetData( "test data" ));
IPrincipal^ myPrincipal = data->Principal;
//Check the user identity
if ( myPrincipal->Identity->Name == "Bob" )
{
Console::WriteLine( "\nHello {0}, you are identified!", myPrincipal->Identity->Name );
Console::WriteLine( data->numOfAccesses );
}
else
{
Console::WriteLine( "Go away! You are not identified!" );
return String::Empty;
}
// calculate and return result to client
return String::Format( "Hi there {0}.", name );
}
};
using System;
using System.Text;
using System.Runtime.Remoting.Messaging;
using System.Security.Principal;
using System.Security.Permissions;
public class HelloServiceClass : MarshalByRefObject {
static int n_instances;
int instanceNum;
public HelloServiceClass() {
n_instances++;
instanceNum = n_instances;
Console.WriteLine(this.GetType().Name + " has been created. Instance # = {0}", instanceNum);
}
~HelloServiceClass() {
Console.WriteLine("Destroyed instance {0} of HelloServiceClass.", instanceNum);
}
public String HelloMethod(String name) {
//Extract the call context data
LogicalCallContextData data = (LogicalCallContextData)CallContext.GetData("test data");
IPrincipal myPrincipal = data.Principal;
//Check the user identity
if(myPrincipal.Identity.Name == "Bob") {
Console.WriteLine("\nHello {0}, you are identified!", myPrincipal.Identity.Name);
Console.WriteLine(data.numOfAccesses);
}
else {
Console.WriteLine("Go away! You are not identified!");
return String.Empty;
}
// calculate and return result to client
return "Hi there " + name + ".";
}
}
Imports System.Text
Imports System.Runtime.Remoting.Messaging
Imports System.Security.Principal
Imports System.Security.Permissions
Public Class HelloServiceClass
Inherits MarshalByRefObject
Private Shared n_instances As Integer
Private instanceNum As Integer
Public Sub New()
n_instances += 1
instanceNum = n_instances
Console.WriteLine(Me.GetType().Name + " has been created. Instance # = {0}", instanceNum)
End Sub
Protected Overrides Sub Finalize()
Console.WriteLine("Destroyed instance {0} of HelloServiceClass.", instanceNum)
MyBase.Finalize()
End Sub
<PermissionSet(SecurityAction.LinkDemand)> _
Public Function HelloMethod(name As [String]) As [String]
'Extract the call context data
Dim data As LogicalCallContextData = CType(CallContext.GetData("test data"), LogicalCallContextData)
Dim myPrincipal As IPrincipal = data.Principal
'Check the user identity
If myPrincipal.Identity.Name = "Bob" Then
Console.WriteLine()
Console.WriteLine("Hello {0}, you are identified!", myPrincipal.Identity.Name)
Console.WriteLine(data.numOfAccesses)
Else
Console.WriteLine("Go away! You are not identified!")
Return [String].Empty
End If
' calculate and return result to client
Return "Hi there " + name + "."
End Function 'HelloMethod
End Class