Array
(
)

Lista num web service não carrega

Pjava
   - 22 out 2012

Pessoal, tenho um web service que me deveria carregar uma lista e a lista está vindo vazia. Abaixo o código do web service que trata disso. Nesta linha(if (_integra.Count() == 0)
return "Parametros de integração não foram encontrados.";) dá o erro e cai no catch. Ainda apanho às pencas com isso. Qualquer ajuda é bem-vinda. )brigado.
[WebMethod]
public string Integracao(string _xml)
{
ISession _session = null;
try
{
_session = Helper.GetSession();
_xml = specialCharsReplace(_xml);
XElement _element = XElement.Parse(_xml);
decimal idCadastro = decimal.Parse(_element.Element("Cadastro").Attribute("ID").Value);
decimal idModulo = decimal.Parse(_element.Element("Cadastro").Element("Modulo").Attribute("ID").Value);

ICriteria _criteria = _session.CreateCriteria(typeof(Workmanager.DAO.IntegracaoGED));
_criteria.Add(Expression.Eq("IDMODULO", idModulo));
_criteria.SetProjection(
Projections.Distinct(Projections.ProjectionList()
.Add(Projections.Alias(Projections.Property("IDCATEGORIA"), "IDCATEGORIA"))));
_criteria.SetResultTransformer(
new NHibernate.Transform.AliasToBeanResultTransformer(typeof(Workmanager.DAO.IntegracaoGED)));
List<Workmanager.DAO.IntegracaoGED> _integra = _criteria.List<Workmanager.DAO.IntegracaoGED>().ToList();
if (_integra.Count() == 0)
return "Parametros de integração não foram encontrados.";
List<Campos> _camposGED = PreencheCamposGED(_element, idModulo, _integra[0].IDCATEGORIA);
bool _retorno = iniciaCategoria(idCadastro, idModulo, _integra[0].IDCATEGORIA, _camposGED);

if (_retorno == true)
return "OK";
else
return "RE";

}
catch (TimeoutException ex)
{
Log.registrarLog(this.GetType().FullName, ex.StackTrace, ex.Message);
return "Tempo Esgotado, O serviço demorou muito para obter uma resposta. " + ex.Message;
}
//catch (Workmanager.WMException ex)
//{
// Log.registrarLog(this.GetType().FullName, ex.StackTrace, ex.Message);
// return ex.ExceptionMessage + ex.Message + ex.StackTrace;
//}
catch (Exception ex)
{
Log.registrarLog(this.GetType().FullName, ex.StackTrace, ex.Message);
return ex.Message;
}
finally
{
_session.Close();
_session.Dispose();
}
}

Robson Robsonalves.net
   - 24 out 2012

Ele cai no catch de TimeOutException ??

Pelo que eu entendi, quando ele vai realizar o Count() ele cai no catch.

A sua fonte de dados é muito grande? Indico um método de leitura mais cadencial armazenando aos poucos as informações em memória!

Ao gerar o _integra, utilize no .ToList() o método Take() e capture uma quantidade menor de dados (caso tenha muitos regitros) assim, você consegue identificar o problema e pensar em algo completo!