none
Consumo de WCF por uma aplicação silverligth RRS feed

  • Pergunta

  • Boa Tarde Pessoal,

    Sou iniciante no silverlight e estou tentando fazer ele conversar com um wcf service.

    Consigo consumir os metodos normalmente atravéz de um projeto web convencional.

    Más quando tento chamar algum metodo atravéz do silverlight ele so me permite chamar o metodo de maneira que ele não retone nem um valor por exemplo o metodo getData:

     public string GetData(int value)
        {
          return string.Format("You entered: {0}", value);
        }
    


    Deveria me retornar uma string, más quando tento chamar ele atravéz do silverlight

    so consigo adicionando o Async na chamada do metodo más isso faz com que eu não receba a string de retorno.

    iservce.Service1Client client = new iservce.Service1Client();
          client.GetDataAsync(1);

    alguem pode me ajudar??

     

    Obrigado!!!

     

     

     

    segunda-feira, 15 de agosto de 2011 20:08

Todas as Respostas

  • Boas André-pSantos,
    O que acontece é que com Silverlight, vc só consegue consumir de forma assíncrona. O método como Async retorna um IAsuncResult e é através dele q vc vai conseguir obter a string desejada. Você pode tambem registrar um evento para que quando terminar o processamento, ele invoke esse evento. Caso queira dar uma olhada num exemplo, segue o link de um post do meu blog. Lá eu trato justamente do consumo de um serviço wcf numa aplicação wp7.
    Espero ter ajudado.
    Abraços

    Daniel Torres Coding is fun :)
    terça-feira, 16 de agosto de 2011 04:03
  • Obrigado Daniel, Ontem eu pesquisei mais sobre o assunto e achei uma solução semelhante a sua.

     

    Más quando chamo o método está me retornado o seguinte erro:

    An error occurred while trying to make a request to URI 'http://localhost:57317/Service1.svc'. This could be due to attempting to access a service in a cross-domain way without a proper cross-domain policy in place, or a policy that is unsuitable for SOAP services. You may need to contact the owner of the service to publish a cross-domain policy file and to ensure it allows SOAP-related HTTP headers to be sent. This error may also be caused by using internal types in the web service proxy without using the InternalsVisibleToAttribute attribute. Please see the inner exception for more details.

    Debugando o prjeto verifiquei que está ocorrendo dentro de uma classe chamada reference.cs no metodo abaixo.

     

     public string EndGetData(System.IAsyncResult result) {
            object[] _args = new object[0];
            string _result = ((string)(base.EndInvoke("GetData", _args, result)));
            return _result;
          }
    Muito obrigado pela ajuda!

    terça-feira, 16 de agosto de 2011 14:09
  • Boas André-pSantos,

    Quanto a essa classe, ela é gerada quando voce adiciona a referencia do seu serviço.

    Uma observação sobre esse erro: Client e Service estão em maquinas diferentes ou na mesma maquina?

    Voce pode dar uma lida nesse artigo para ver como configurar.

     

    Espero ter ajudado.

     

    Abraços,


    Daniel Torres Coding is fun :)
    terça-feira, 16 de agosto de 2011 22:55