none
Erro com retorno da função (Array) RRS feed

  • Pergunta

  • Olá! Estou montando um serviço WCF, onde tenho uma função que me retorna um array de objetos de uma classe Pessoa.

    Pois bem, chamando a função, é realizado a busca no banco e obtida um array desses objetos, após a busca eu faço o retorno, assim:

    Public Function RecuperarPessoas() As Pessoa()
          Dim pessoas = BuscaPessoa()
          return pessoas
    End Function

    O problema é que após o retorno meu cliente exibe o seguinte erro:
    "A conexão subjacente estava fechada: A conexão foi fechada de modo inesperado."

    Imagino que o erro esteja acontecendo na transação das informações, pois o serviço chega a retornar a o array. Alguém te idéia do que está acontecendo??

    quinta-feira, 22 de outubro de 2009 19:48

Respostas

  • É isso ai Carlos,

    O problema era que eu não estava especificando os menbros da minha classe com o DataMenber e o DataContract na classe.

    Toda classe criada deve ser marcada com o atributo DataContract. E todos os menbros desta devem ser marcados com o atributo DataMenber.

    Funciono certinho aqui agora!
    • Marcado como Resposta Marcos Latchuk sexta-feira, 23 de outubro de 2009 12:46
    sexta-feira, 23 de outubro de 2009 12:45

Todas as Respostas

  • Alô Marcos,

    Você pode habilitar tracing no seu serviço, para ver qual exceção foi lançada no serviço que causou a conexão ser fechada? As instruções para o tracing estão em http://msdn.microsoft.com/en-us/library/ms733025.aspx.
    quinta-feira, 22 de outubro de 2009 20:25
  • Ok Carlos,

    Isso ajudou aqui, agora sei que o erro acontece no serviço, creio eu que é por eu não estar declarando meu objeto dentro do DataContract, pois fiz um teste retornando um Array de String e funcionou perfeitamente... mas no caso do Array de objetos da minha classe, que contém um array de outros objetos dentro dela, está ocorrendo o mesmo erro ainda.

    Vou tentar declarar minhas classes dentro do DataContract e ver o que acontece. Obrigado ai pela dica!

    Abraço!
    • Marcado como Resposta Marcos Latchuk sexta-feira, 23 de outubro de 2009 12:43
    • Não Marcado como Resposta Marcos Latchuk sexta-feira, 23 de outubro de 2009 12:43
    sexta-feira, 23 de outubro de 2009 12:02
  • É isso ai Carlos,

    O problema era que eu não estava especificando os menbros da minha classe com o DataMenber e o DataContract na classe.

    Toda classe criada deve ser marcada com o atributo DataContract. E todos os menbros desta devem ser marcados com o atributo DataMenber.

    Funciono certinho aqui agora!
    • Marcado como Resposta Marcos Latchuk sexta-feira, 23 de outubro de 2009 12:46
    sexta-feira, 23 de outubro de 2009 12:45
  • No meu caso, acontecia o erro porque na minha contract estava retornando o objeto inteiro, com as suas dependências (EntitySet).

    Resolvi retornando apenas o objeto, e caso eu tivesse que usar algum objeto, bastava criar um objeto datamember para ele que não fosse EntitySet.

    quarta-feira, 14 de novembro de 2012 13:05