none
Tratamento de permissões nos Métodos RRS feed

  • Pergunta

  • Bom Dia, 

    Tenho um WCF service com diversos métodos e vou controlar o acesso ao mesmo por usuário hoje passo o usuário e senha via "headers" gostaria de saber como posso fazer para gerar por exemplo uma exception com a mensagem customizada no método dentro do WCF para que eu possa recuperar dentro do Completed do método na minha aplicação por exemplo:

     

    Chamada do método na aplicação:

     

          IwebServiceClient _WebClient = new IwebServiceClient();
          MainPage _CurrentMain = ((MainPage)(Application.Current.RootVisual as Grid).Children[0]);
    
          busyIndicator1.IsBusy = true;
    
          using (OperationContextScope scope = new OperationContextScope(_WebClient.InnerChannel))
          {
            _WebClient.OpenAsync();
    
            System.ServiceModel.Channels.MessageHeader customUserID = System.ServiceModel.Channels.MessageHeader.CreateHeader("UserID", "myHeader", _CurrentMain.UserName);
            System.ServiceModel.Channels.MessageHeader customPassWd = System.ServiceModel.Channels.MessageHeader.CreateHeader("PassWd", "myHeader", _CurrentMain.Password);
            OperationContext.Current.OutgoingMessageHeaders.Add(customUserID);
            OperationContext.Current.OutgoingMessageHeaders.Add(customPassWd);
    
            _WebClient.CarregaClientePorFiltroAsync(txtPesquisa.Text);
            _WebClient.CarregaClientePorFiltroCompleted += new EventHandler<CarregaClientePorFiltroCompletedEventArgs>(WebClient_CarregaClientePorFiltroCompleted);
            _WebClient.CloseAsync();
          }
    


    No Completed esta assim:

     

        private void WebClient_CarregaClientePorFiltroCompleted(object sender, CarregaClientePorFiltroCompletedEventArgs e) 
        {
          GridCliente.ItemsSource = e.Result;
          busyIndicator1.IsBusy = false;
        }
    


    Gostaria de poder usar por exemplo:

     

        private void WebClient_CarregaClientePorFiltroCompleted(object sender, CarregaClientePorFiltroCompletedEventArgs e)
        {
          if (e.Error != null)
          {
            MessageBox.Show(e.Error.Message); //Mensagem Customizada, vinda do WCF.
          }
          else
          {
            GridCliente.ItemsSource = e.Result;
            busyIndicator1.IsBusy = false;
          }
        }
    


    Atenciosamente,

    Obrigado.

    terça-feira, 5 de julho de 2011 12:27

Todas as Respostas