CallContext.GetData(String) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft ein Objekt mit dem angegebenen Namen aus CallContext ab.
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
Parameter
- name
- String
Der Name des Elements im Aufrufkontext.
Gibt zurück
Das Objekt im Aufrufkontext, das dem angegebenen Namen zugeordnet ist.
- Attribute
Ausnahmen
Der direkte Aufrufer verfügt nicht über die Berechtigung für die Infrastruktur.
Beispiele
Das folgende Codebeispiel veranschaulicht die Verwendung der GetData -Methode zum Übertragen von Prinzipal- und Identitätsobjekten an einen Remotestandort zur Identifizierung. Informationen zum Anzeigen des Codes für die klasse, die LogicalCallContextData
in diesem Beispiel verwendet wird, finden Sie im Beispiel für die ILogicalThreadAffinative Schnittstelle. Informationen zum Anzeigen des Codes für die im Beispiel verwendete Clientklasse finden Sie im Beispiel für die CallContext -Klasse. Um den Code für die in diesem Beispiel verwendete Serverklasse anzuzeigen, sehen Sie sich das Beispiel für die -Klasse an RegisterActivatedServiceType .
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