none
DUVIDA - SessionShutdownTrigger RRS feed

  • Pergunta

  • Como consigo pegar um valor de uma variavel da classe que emitiu esse envento?

    public class SessionShutdownTrigger : IInputSessionShutdown
    {
      public void ChannelFaulted(IDuplexContextChannel channel)
      {
        try
        {
    	  // Valor da variavel aqui.
          Console.WriteLine("ChannelFaulted");
        }
        catch (Exception ex)
        {
          Console.WriteLine(ex.Message);
        }
      }
      public void DoneReceiving(IDuplexContextChannel channel)
      {
        Console.WriteLine("DoneReceiving");
      }
    }
    public class SessionShutdownTriggerBehaviorAttribute : Attribute, IContractBehavior
    {
      public void ApplyDispatchBehavior(ContractDescription contractDescription,
      ServiceEndpoint endpoint, DispatchRuntime dispatchRuntime)
      {
        dispatchRuntime.InputSessionShutdownHandlers.Add(new SessionShutdownTrigger());
      }
    
    
    }

    Criei o atributo e "decorei" a classe do serviço.

    obrigado!

     

     

    sexta-feira, 10 de setembro de 2010 19:21

Respostas

  • Boas Alan,

    Note que os métodos recebem uma classe que implementa a interface IDuplexContextChannel, que por sua vez, expõe uma propriedade chamada CallbackInstance, que traz informações pertinentes ao canal de processamento com o cliente. Talvez você possa utilizá-la para a tua regra.

    Ou ainda, recorrer a classe OperationContext, e lá conseguir acessar algumas informações, como é o caso do SessionId do cliente.
    http://www.israelaece.com
    sexta-feira, 10 de setembro de 2010 20:30
    Moderador

Todas as Respostas

  • Boas Alan,

    Que tipo de informações quer capturar?


    http://www.israelaece.com
    sexta-feira, 10 de setembro de 2010 19:50
    Moderador
  • Uma variavel tipo string que fica no corpo da classe do meu serviço.

    essa variavel é diferente para cada usuario que instanciou o proxy.

    sexta-feira, 10 de setembro de 2010 19:56
  • Boas Alan,

    Note que os métodos recebem uma classe que implementa a interface IDuplexContextChannel, que por sua vez, expõe uma propriedade chamada CallbackInstance, que traz informações pertinentes ao canal de processamento com o cliente. Talvez você possa utilizá-la para a tua regra.

    Ou ainda, recorrer a classe OperationContext, e lá conseguir acessar algumas informações, como é o caso do SessionId do cliente.
    http://www.israelaece.com
    sexta-feira, 10 de setembro de 2010 20:30
    Moderador
  • como eu varia? um cast?

    tem como me fazer um exemplo simples? obrigado!

    sexta-feira, 10 de setembro de 2010 22:31
  • Israel, Consegui! Obrigado!

     

            ServicoBase callback =
                (ServicoBase)channel.CallbackInstance.GetServiceInstance();

     

     

    sábado, 11 de setembro de 2010 00:33