RemotingServices.GetSessionIdForMethodMessage(IMethodMessage) Méthode

Définition

Récupère un ID de session pour un message.

C#
public static string GetSessionIdForMethodMessage (System.Runtime.Remoting.Messaging.IMethodMessage msg);
C#
[System.Security.SecurityCritical]
public static string GetSessionIdForMethodMessage (System.Runtime.Remoting.Messaging.IMethodMessage msg);

Paramètres

msg
IMethodMessage

IMethodMessage pour lequel un ID de session est demandé.

Retours

Chaîne d'ID de session qui identifie de façon unique la session en cours.

Attributs

Exceptions

L'appelant immédiat n'a pas d'autorisation d'accès à l'infrastructure.

Exemples

L’exemple de code suivant montre comment obtenir la chaîne d’ID de session pour la session active.

C#
public void ProcessMessageStart(IMessage requestMessage, bool bClientSide, bool bAsyncCall) {

   Console.WriteLine("\nProcessMessageStart");
   Console.WriteLine("requestMessage = {0}", requestMessage);

   try {
      Console.WriteLine("SessionId = {0}.",
          RemotingServices.GetSessionIdForMethodMessage((IMethodMessage)requestMessage));
   }
   catch (InvalidCastException) {
      Console.WriteLine("The requestMessage is not an IMethodMessage.");
   }

   IMethodCallMessage requestMethodCallMessage;

   try {
      requestMethodCallMessage = (IMethodCallMessage)requestMessage;
      // Prints the details of the IMethodCallMessage to the console.
      Console.WriteLine("\nMethodCall details");
      Console.WriteLine("Uri = {0}", requestMethodCallMessage.Uri);
      Console.WriteLine("TypeName = {0}", requestMethodCallMessage.TypeName);
      Console.WriteLine("MethodName = {0}", requestMethodCallMessage.MethodName);
      Console.WriteLine("ArgCount = {0}", requestMethodCallMessage.ArgCount);

      Console.WriteLine("MethodCall.Args");
      foreach(object o in requestMethodCallMessage.Args)
          Console.WriteLine("\t{0}", o);

      // Sends this method call message to another server to replicate
      // the call at the second server.
      if (requestMethodCallMessage.Uri == replicatedServiceUri) {

         SampleService replicationService =
            (SampleService)Activator.GetObject(typeof(SampleService),
            replicationServerUrl + replicatedServiceUri);

         IMethodReturnMessage returnMessage =
            RemotingServices.ExecuteMessage(replicationService, requestMethodCallMessage);

         // Prints the results of the method call stored in the IMethodReturnMessage.
         Console.WriteLine("\nMessage returned by ExecuteMessage.");
         Console.WriteLine("\tException = {0}", returnMessage.Exception);
         Console.WriteLine("\tReturnValue = {0}", returnMessage.ReturnValue);
         Console.WriteLine("\tOutArgCount = {0}", returnMessage.OutArgCount);
         Console.WriteLine("Return message OutArgs");

         foreach(object o in requestMethodCallMessage.Args)
            Console.WriteLine("\t{0}", o);
      }
   }
   catch (InvalidCastException) {
       Console.WriteLine("The requestMessage is not a MethodCall");
   }
}

Remarques

Le même ID de session peut être retourné pour les objets de la même application, mais cette méthode ne retournera jamais le même ID de session pour deux objets dans des applications distantes différentes.

Pour plus d’informations sur l’identification des sessions et des ID de session, consultez ASP.Net ASP.NET Vue d’ensemble de l’état de session.

S’applique à

Produit Versions
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1