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 der 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
Parameter
- name
- String
Der Name des Elements im Aufrufkontext.
Gibt zurück
Das Objekt im Aufrufkontext, der dem angegebenen Namen zugeordnet ist.
- Attribute
Ausnahmen
Der direkte Aufrufer verfügt nicht über die Infrastrukturberechtigung.
Beispiele
Im folgenden Codebeispiel wird die Verwendung der GetData Methode zum Übertragen von Prinzipal- und Identitätsobjekten an einen Remotestandort zur Identifizierung veranschaulicht. Informationen zum Anzeigen des Codes für die LogicalCallContextData in diesem Beispiel verwendete Klasse 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. Informationen zum Anzeigen des Codes für die in diesem Beispiel verwendete Serverklasse finden Sie im Beispiel für die RegisterActivatedServiceType Klasse.
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