none
WCF - Retornar um objeto composto RRS feed

  • Pergunta

  • Prezados,

    Tenho uma classe "SystemProfile" como visto abaixo:

        public class SystemProfile : IDisposable
        {
            #region properties
    
            public Ucl_Usuarios_Coletores sysUser { get; set; }
            public Pac_Parametros_Area_Coleta sysArea { get; set; }
            public List<Oac_Operacoes_Area_Coleta> sysOperation { get; set; }
    
            #endregion
    
            #region Methods
    
            public SystemProfile GetProfileByLogin(string login)
            {
                using (SystemUser sUser = new SystemUser())
                {
                    using (SystemArea sArea = new SystemArea())
                    {
                        using (SystemOperations sOperation = new SystemOperations())
                        {
                            using (SystemProfile sProfile = new SystemProfile())
                            {
                                sysUser = sUser.GetUserByLogin(login);
                                sysArea = sArea.GetArea(sysUser.IdPac);
                                sysOperation = sOperation.GetOperationsByArea(sysArea.Id);
    
                                return sProfile;
                            }
                        }
                    }
                }
            }
    
            #endregion
    
            #region IDisposable Members
    
            public void Dispose()
            {
                GC.SuppressFinalize(this);
            }
    
            #endregion
        }
    }

    Essa classe possui um método possui um método que retorna a própria classe com as propriedades encapsuladas.

    O problema é que quando rodo o WCF test client ou quando adiciono a referêcnia do WCF service na minha aplicação  sempre ocorre o erro:

    No WCF test client:

    "This operation is not supported in the WCF Test Client because it uses type BssAppService.ProfileParam"

    Na aplicação:

    "The custom tool 'MSDiscoCodeGenerator' failed. Unable to import binding 'BasicHttpBinding_IProfile' from namespace 'http://tempuri.org/'.

    O WCF sevice foi criado no VS2010 com framework 4.0 e está sendo consumido em uma aplição feita VS2008 framework 3.5.

    Alguém sabe o que pode ser?

    Grato.

    Daniel Antunes.

    quinta-feira, 16 de fevereiro de 2012 14:09

Todas as Respostas

  • Esqueci de postar o código da inteface:

        [ServiceContract]
        public interface IProfile
        {
            [OperationContract]
            ProfileParams GetSystemProfileByLogin(string login);
        }
    
        [DataContract]
        public class ProfileParams
        {
            [DataMember]
            public SystemProfile SysProfile { get; set; }
        }

    Obrigado.

    Daniel.

    quinta-feira, 16 de fevereiro de 2012 14:16
  • Poste a chamada do método !


    mais por vis das duvidas   verifique se suas classes de profundidade (ucl_usuarios_coletores, Pac_parametros_area_coleta, oac_operacoes_ara_coleta) tem o using System.Runtime.Serialization e se elas tem decorado [DataMember] encima de cada atributo e [dataContract] encima do nome da classe. Sem o serialization os objetos não retornarão.

    EX:

    [dataContract]
    public class ucl_usuarios_coletores
    {
         [dataMember]
         public nome{ get; set; }
         
         [Datamember]
         public idate{get; set;}
    }


    • Editado Renato Coqueiro quinta-feira, 16 de fevereiro de 2012 17:52 Arrumar
    • Sugerido como Resposta Renato Coqueiro quinta-feira, 16 de fevereiro de 2012 17:54
    • Não Sugerido como Resposta Renato Coqueiro sexta-feira, 24 de fevereiro de 2012 11:12
    quinta-feira, 16 de fevereiro de 2012 17:51
  • Como ficou o problema? Marque a resposta que te ajudou ou a forma que solucionou para ficar para outros ...
    sexta-feira, 4 de maio de 2012 13:30