CallContext.GetData メソッド
アセンブリ: mscorlib (mscorlib.dll 内)

Dim name As String Dim returnValue As Object returnValue = CallContext.GetData(name)
戻り値
指定した名前に関連付けられた呼び出しコンテキストのオブジェクト。


GetData メソッドを使用して、識別のためにリモートの場所に プリンシパル オブジェクトと ID オブジェクト を送信する例を次のコードに示します。サンプルで使用する LogicalCallContextData クラスのコードを表示するには、ILogicalThreadAffinative インターフェイスのトピックの例を参照してください。サンプルで使用するクライアント クラスのコードを表示するには、CallContext クラスのトピックの例を参照してください。この例で使用されているサーバー クラスのコードを確認するには、RegisterActivatedServiceType クラスの例を参照してください。
Imports System 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 'New Protected Overrides Sub Finalize() Console.WriteLine("Destroyed instance {0} of HelloServiceClass.", instanceNum) MyBase.Finalize() End Sub 'Finalize <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 'HelloServiceClass
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); } [PermissionSet(SecurityAction.LinkDemand)] 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 + "."; } }
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 ); } };


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- CallContext.GetData メソッドのページへのリンク