Rotina que falha de vez em quando.

13/02/2010

A rotina abaixo de vez em quando não roda, os dados não aparecem na página. Teria alguma sugestão? É asp.net 2.     protected void Page_Load(object sender, EventArgs e) { try { if (!Page.IsPostBack) { ((System.Web.UI.WebControls.Label)this.FormView1.FindControl("lblNomeDigitator")).Text = Profile.Nome; ((System.Web.UI.WebControls.Label)this.FormView1.FindControl("lblTelefoneDigitador")).Text = Profile.Telefone; ((System.Web.UI.WebControls.Label)this.FormView1.FindControl("lblCodigoDigitador")).Text = Profile.Codigo.ToString(); int Sequencia = 0; int AnoSequencia = 0; string CodigoProposta; System.Data.SqlClient.SqlConnection conexao = new System.Data.SqlClient.SqlConnection(); System.Data.SqlClient.SqlCommand Comando = new System.Data.SqlClient.SqlCommand(); System.Data.SqlClient.SqlDataReader Leitor;   conexao.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["PropostaConnectionString"].ConnectionString; conexao.Open(); Comando.Connection = conexao; Comando.CommandText = "Select Regra1,Regra2,Regra3,Regra4,Regra5 from Vendedores where Codigo = " + Profile.CodigoVendedorDestinatario.ToString().Trim(); Leitor = Comando.ExecuteReader(); System.Web.UI.WebControls.ListItem item; if (Leitor.Read()) { if (Convert.ToBoolean(Leitor["Regra1"]) == true) { item = new ListItem("Regra1", "Regra1"); ((System.Web.UI.WebControls.DropDownList)this.FormView1.FindControl("DropRegra")).Items.Add(item); } if (Convert.ToBoolean(Leitor["Regra2"]) == true) { item = new ListItem("Regra2", "Regra2"); ((System.Web.UI.WebControls.DropDownList)this.FormView1.FindControl("DropRegra")).Items.Add(item); } if (Convert.ToBoolean(Leitor["Regra3"]) == true) { item = new ListItem("Regra3", "Regra3"); ((System.Web.UI.WebControls.DropDownList)this.FormView1.FindControl("DropRegra")).Items.Add(item); } if (Convert.ToBoolean(Leitor["Regra4"]) == true) { item = new ListItem("Regra4", "Regra4"); ((System.Web.UI.WebControls.DropDownList)this.FormView1.FindControl("DropRegra")).Items.Add(item); } if (Convert.ToBoolean(Leitor["Regra5"]) == true) { item = new ListItem("Regra5", "Regra5"); ((System.Web.UI.WebControls.DropDownList)this.FormView1.FindControl("DropRegra")).Items.Add(item); } } Leitor.Close(); item = new ListItem("Inexistente", "Inexistente"); ((System.Web.UI.WebControls.DropDownList)this.FormView1.FindControl("DropRegra")).Items.Add(item);     Comando.CommandText = "Select isnull(Sequencia,-1) as Sequencia,AnoSequencia,Sigla from vendedores where codigo = " + Profile.CodigoVendedorDestinatario.ToString().Trim(); Leitor = Comando.ExecuteReader(); if (Leitor.Read()) { if (Convert.ToInt16(Leitor["Sequencia"]) == -1) { Sequencia = 0; AnoSequencia = DateTime.Now.Year; } else { Sequencia = Convert.ToInt16(Leitor["Sequencia"]); AnoSequencia = Convert.ToInt16(Leitor["AnoSequencia"]); } } Leitor.Close(); Comando.CommandText = "Select nome from oportunidades where codigo = " + Session["CodigoOportunidade"].ToString(); ((System.Web.UI.WebControls.Label)this.FormView1.FindControl("lblNomeOportunidade")).Text = Comando.ExecuteScalar().ToString();   conexao.Close(); if (DateTime.Now.Year > AnoSequencia) { Sequencia = 1; AnoSequencia = DateTime.Now.Year; } else Sequencia++; CodigoProposta = Profile.Sigla + " " + Sequencia.ToString("0000") + "/"+ DateTime.Today.Year.ToString(); ((System.Web.UI.WebControls.TextBox)this.FormView1.FindControl("CodigoTextBox")).Text = CodigoProposta; Session["AnoSequencia"] = AnoSequencia.ToString(); Session["SequenciaProposta"] = Sequencia.ToString(); if (Session["Papel"].ToString() == "AdmVendas") { ((System.Web.UI.WebControls.TextBox)FormView1.FindControl("txtPrazoGarantia")).Enabled = true; ((System.Web.UI.WebControls.TextBox)FormView1.FindControl("txtPrazoInstalacao")).Enabled = true; ((System.Web.UI.WebControls.TextBox)FormView1.FindControl("txtValidadeEstimativa")).Enabled = true; ((System.Web.UI.WebControls.TextBox)FormView1.FindControl("txtDias")).Enabled = true; ((System.Web.UI.WebControls.TextBox)FormView1.FindControl("txtFormaPagamento")).Enabled = true; } else { ((System.Web.UI.WebControls.TextBox)FormView1.FindControl("txtPrazoGarantia")).Enabled = false; ((System.Web.UI.WebControls.TextBox)FormView1.FindControl("txtPrazoInstalacao")).Enabled = false; ((System.Web.UI.WebControls.TextBox)FormView1.FindControl("txtValidadeEstimativa")).Enabled = false; ((System.Web.UI.WebControls.TextBox)FormView1.FindControl("txtDias")).Enabled = false; ((System.Web.UI.WebControls.TextBox)FormView1.FindControl("txtFormaPagamento")).Enabled = false; } ((System.Web.UI.WebControls.TextBox)FormView1.FindControl("txtPrazoGarantia")).Text = "12"; ((System.Web.UI.WebControls.TextBox)FormView1.FindControl("txtPrazoInstalacao")).Text = "2"; ((System.Web.UI.WebControls.TextBox)FormView1.FindControl("txtValidadeEstimativa")).Text = "30"; ((System.Web.UI.WebControls.TextBox)FormView1.FindControl("txtDias")).Text = "60"; ((System.Web.UI.WebControls.TextBox)FormView1.FindControl("txtFormaPagamento")).Text = "A vista"; } } catch (System.Exception ex){ Monitoramento.ExibirMensagem(ex.Message, Page); } //} }
Ademilso Peres

Ademilso Peres

Curtidas 0

Respostas

Luiz Maia

Luiz Maia

13/02/2010

Ola Ademilso,   É gerado algum tipo de excessão? Você ja colocou um debug para testar a aplicação?   Pode ser algum haver com o PostBack, ja verificou isto tb?   Aguardo seu contato... Abraços Att Luiz Maia
GOSTEI 0
Ademilso Peres

Ademilso Peres

13/02/2010

Sim, já verifiquei tudo acredito que é problema de seção mas não gera nenhuma excessão, Usando trace descobri que a rotina roda até o final mas o ultimo if não é executado.  porque o dropdrowlist aparece habilitado quando não deveria.
GOSTEI 0
Luiz Maia

Luiz Maia

13/02/2010

Ademilso, O problema esta aqui: (Session["Papel"].ToString() == "AdmVendas") ??? Pode ser que esta perdendo a sessao então. Correto?   Aumente o tempo de sessão e também crie uma regra que pode ser colocada na masterpage no evento load, que, vc verifica se uma sessao ainda existe, caso contrario vc redireciona para uma pagina de login novamente, por exemplo.   Aguardo seu retorno Ate mais   Att Luiz Maia      
GOSTEI 0
Ademilso Peres

Ademilso Peres

13/02/2010

Como posso fazer a rotina para verificar se tenho a sessão e redirecionar para a pagina de login?
GOSTEI 0
Luiz Maia

Luiz Maia

13/02/2010

Ademilso,   Basta colocar dentro de um bloco try catch:   try {     if (this.Session["luiz"] == "luiz")       Nonononon } catch {    Response.Redirect("nonononono"); }
GOSTEI 0
Ademilso Peres

Ademilso Peres

13/02/2010

Pelo que percebi meu site esta perdento a seção constantemente, voce teria ideial do que pode ser?
GOSTEI 0
Luiz Maia

Luiz Maia

13/02/2010

Ademilso,   Verifique o tempo de sessão no IIS de sua aplicação e também no arquivo web.config.   Abraços Att Luiz Maia
GOSTEI 0
Luiz Maia

Luiz Maia

13/02/2010

Ola Ademilso,   Como esta indo?   Att Luiz Maia
GOSTEI 0
Ademilso Peres

Ademilso Peres

13/02/2010

Como eu verifico no web.config o tempo de sessão? Qual é o parametro? 
GOSTEI 0
Luiz Maia

Luiz Maia

13/02/2010

Ademilso, <sessionState mode="Off|InProc|StateServer|SQLServer"
              cookieless="true|false"
              timeout="number of minutes"
              stateConnectionString="tcpip=server:port"
              sqlConnectionString="sql connection string"
              stateNetworkTimeout="number of seconds"/>   Fonte: http://msdn.microsoft.com/en-us/library/h6bb9cz9(VS.71).aspx   Abraços Att Luiz Maia    
GOSTEI 0
Luiz Maia

Luiz Maia

13/02/2010

E ai Ademilso, resolveu?   Aguardo...   Abraços Att Luiz Maia
GOSTEI 0
Luiz Maia

Luiz Maia

13/02/2010

Ademilso,   Como não obtivemos resposta, estamos concluindo o chamado. Continuamos a sua disposição para qualquer tipo de dúvida.   Abraços Att Luiz Maia
GOSTEI 0
POSTAR