none
Retornar Ilist WebService RRS feed

  • Pergunta

  • Pessoal criei um simples metodos em um arquivo para websercice, que retorna uma lista de clientes.
    Mais quando executo ele surge este erro na página

    Não é possível serializar a interface System.Collections.Generic.IList`1[[Projeto.Modelo.Clientes, Modelo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].

    Descrição: Ocorreu uma exceção não tratada durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.

    Detalhes da Exceção: System.NotSupportedException: Não é possível serializar a interface System.Collections.Generic.IList`1[[Projeto.Modelo.Clientes, Modelo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].

    Como poderia resolver isso?
    quinta-feira, 1 de outubro de 2009 19:53

Respostas

  • Pq quadno for desserializar o objeto, ele precisa conseguir instanciar... 

    A framework só consegue instanciar para desserializar se tiver um construtor vazio, já que não sabe quais parâmetros passar no momento da criação dos objetos.

    Veja que o processo de serialização consiste em parsear o request SOAP, instanciar via reflection o tipo publicado como WebMethod, chunchar os valores do request no novo objeto e delegar para tua aplicação, para que vc não tenha o trabalho do parse.



    Abraço,

    Eric
    sexta-feira, 2 de outubro de 2009 12:10

Todas as Respostas

  • Mário,

    A solução esta justamente isso que a mesangem esta recebendo, a Interface ILIST não pode ser serializada, logo não podera ser usada como tipo de retorno para seu serviço.

    A solução e simples, transforme o retorno em uma list generica  com o tipo  ou Array com o type desejado. Se o retorno vai ter varis tipo de retornos deve-se atentar que cada tipo tb deve poder ser serialziado para que possa ser enviado, Em alguns cenários maix complexo (embora não recomendado) alguns desenvolvedores retornam um XML na forma de string e no client fazem o parse na mão.
    Fernando Cerqueira MVP.ASP.NET TEAM AJAX.TOOLKIT CONSULTOR & ARQUITETO
    quinta-feira, 1 de outubro de 2009 22:58
    Moderador
  • Eu preciso que esse método me retorne um Ilist de clientes, tem um exemplo de como posso resolver?
    quinta-feira, 1 de outubro de 2009 23:49
  • Coloquei List, só que ele diz que clientes deve ter um constructor vázio, pq?
    quinta-feira, 1 de outubro de 2009 23:52
  • Pq quadno for desserializar o objeto, ele precisa conseguir instanciar... 

    A framework só consegue instanciar para desserializar se tiver um construtor vazio, já que não sabe quais parâmetros passar no momento da criação dos objetos.

    Veja que o processo de serialização consiste em parsear o request SOAP, instanciar via reflection o tipo publicado como WebMethod, chunchar os valores do request no novo objeto e delegar para tua aplicação, para que vc não tenha o trabalho do parse.



    Abraço,

    Eric
    sexta-feira, 2 de outubro de 2009 12:10