Freigeben über


IMethodMessage.LogicalCallContext-Eigenschaft

Ruft den LogicalCallContext für den aktuellen Methodenaufruf ab.

Namespace: System.Runtime.Remoting.Messaging
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
ReadOnly Property LogicalCallContext As LogicalCallContext
'Usage
Dim instance As IMethodMessage
Dim value As LogicalCallContext

value = instance.LogicalCallContext
LogicalCallContext LogicalCallContext { get; }
property LogicalCallContext^ LogicalCallContext {
    LogicalCallContext^ get ();
}
/** @property */
LogicalCallContext get_LogicalCallContext ()
function get LogicalCallContext () : LogicalCallContext

Eigenschaftenwert

Ruft den LogicalCallContext für den aktuellen Methodenaufruf ab.

Ausnahmen

Ausnahmetyp Bedingung

SecurityException

Der direkte Aufrufer führt den Aufruf über einen Verweis auf die Schnittstelle aus und verfügt nicht über die Berechtigung für die Infrastruktur.

Beispiel

Der folgende Beispielcode veranschaulicht, wie mithilfe der LogicalCallContext-Eigenschaft bestimmt wird, ob Werte an den logischen Thread angefügt sind.

Public Class MyProxy
   Inherits RealProxy

   Private stringUri As String
   Private targetObject As MarshalByRefObject

   <SecurityPermission(SecurityAction.LinkDemand)> _
   Public Sub New(type As Type)
      MyBase.New(type)
      targetObject = CType(Activator.CreateInstance(type), MarshalByRefObject)
      Dim myObject As ObjRef = RemotingServices.Marshal(targetObject)
      stringUri = myObject.URI
   End Sub 'New

<SecurityPermission(SecurityAction.LinkDemand)> _
   Public Sub New(type As Type, targetObject As MarshalByRefObject)
      MyBase.New(type)
      Me.targetObject = targetObject
   End Sub 'New


<SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags:=SecurityPermissionFlag.Infrastructure)> _
   Public Overrides Function Invoke(message As IMessage) As IMessage
      message.Properties("__Uri") = stringUri
      Dim myMethodMessage As IMethodMessage = _
            CType(ChannelServices.SyncDispatchMessage(message), IMethodMessage)
      Console.WriteLine("---------IMethodMessage example-------")
      Console.WriteLine("Method name : " + myMethodMessage.MethodName)
      Console.WriteLine("LogicalCallContext has information : " + _
            myMethodMessage.LogicalCallContext.HasInfo.ToString())
      Console.WriteLine("Uri : " + myMethodMessage.Uri)
      Return myMethodMessage
   End Function 'Invoke

End Class 'MyProxy
   public class MyProxy : RealProxy
   {

   String stringUri;
   MarshalByRefObject targetObject;

[SecurityPermission(SecurityAction.LinkDemand)]
public MyProxy(Type type) : base(type)
{
      targetObject = (MarshalByRefObject)Activator.CreateInstance(type);
      ObjRef myObject = RemotingServices.Marshal(targetObject);
      stringUri = myObject.URI;
   }

   [SecurityPermission(SecurityAction.LinkDemand)]
   public MyProxy(Type type, MarshalByRefObject targetObject) : base(type)
   {
      this.targetObject = targetObject;
   }


[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)]
   public override IMessage Invoke(IMessage message)
   {
      message.Properties["__Uri"] = stringUri;
      IMethodMessage myMethodMessage = 
         (IMethodMessage)ChannelServices.SyncDispatchMessage(message);

      Console.WriteLine("---------IMethodMessage example-------");
      Console.WriteLine("Method name : " + myMethodMessage.MethodName);
      Console.WriteLine("LogicalCallContext has information : " +
         myMethodMessage.LogicalCallContext.HasInfo);
      Console.WriteLine("Uri : " + myMethodMessage.Uri);

      return myMethodMessage;
   }
}
//This sample requires full trust
[PermissionSetAttribute(SecurityAction::Demand, Name = "FullTrust")]
public ref class MyProxy: public RealProxy
{
private:
   String^ stringUri;
   MarshalByRefObject^ targetObject;

public:
   MyProxy( Type^ type )
      : RealProxy( type )
   {
      targetObject = dynamic_cast<MarshalByRefObject^>(Activator::CreateInstance( type ));
      ObjRef^ myObject = RemotingServices::Marshal( targetObject );
      stringUri = myObject->URI;
   }

   MyProxy( Type^ type, MarshalByRefObject^ targetObject )
      : RealProxy( type )
   {
      this->targetObject = targetObject;
   }

   virtual IMessage^ Invoke( IMessage^ message ) override
   {
      message->Properties[ "__Uri" ] = stringUri;
      IMethodMessage^ myMethodMessage = dynamic_cast<IMethodMessage^>(ChannelServices::SyncDispatchMessage( message ));
      Console::WriteLine( "---------IMethodMessage* example-------" );
      Console::WriteLine( "Method name : {0}", myMethodMessage->MethodName );
      Console::WriteLine( "LogicalCallContext has information : {0}", myMethodMessage->LogicalCallContext->HasInfo );
      Console::WriteLine( "Uri : {0}", myMethodMessage->Uri );
      return myMethodMessage;
   }
};
/** @attribute SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.Infrastructure)public class MyProxyAttribute extends ProxyAttribute
 */
public class MyProxy extends RealProxy
{
    private String stringUri;
    private MarshalByRefObject targetObject;
   
    public MyProxy(Type type)
    {
        super(type);
        targetObject =(MarshalByRefObject)Activator.CreateInstance(type);
        ObjRef myObject = RemotingServices.Marshal(targetObject);
        stringUri = myObject.get_URI();
    } //MyProxy
      
    public MyProxy(Type type, MarshalByRefObject targetObject)
    {
        super(type);
        this.targetObject = targetObject;
    } //MyProxy
      
    public IMessage Invoke(IMessage message) 
    {
        message.get_Properties() .set_Item( "__Uri" , stringUri );
        IMethodMessage myMethodMessage
            = (IMethodMessage)ChannelServices.SyncDispatchMessage(message);
      
        Console.WriteLine("---------IMethodMessage example-------");
        Console.WriteLine("Method name : " + myMethodMessage.get_MethodName());
        Console.WriteLine("LogicalCallContext has information : " 
            + myMethodMessage.get_LogicalCallContext().get_HasInfo());
        Console.WriteLine("Uri : " + myMethodMessage.get_Uri());
      
        return myMethodMessage ;
    } //Invoke
} //MyProxy

.NET Framework-Sicherheit

Plattformen

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 unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

IMethodMessage-Schnittstelle
IMethodMessage-Member
System.Runtime.Remoting.Messaging-Namespace