Fórum Rotina que falha de vez em quando. #15682
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);
}
//}
}
Posts
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
20/02/2010
Ademilso Peres
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.
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
22/02/2010
Ademilso Peres
Como posso fazer a rotina para verificar se tenho a sessão e redirecionar para a pagina de login?
Ademilso,
Basta colocar dentro de um bloco try catch:
try
{
if (this.Session["luiz"] == "luiz")
Nonononon
}
catch
{
Response.Redirect("nonononono");
}
26/02/2010
Ademilso Peres
Pelo que percebi meu site esta perdento a seção constantemente, voce teria ideial do que pode ser?
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
Ola Ademilso,
Como esta indo?
Att
Luiz Maia
08/03/2010
Ademilso Peres
Como eu verifico no web.config o tempo de sessão? Qual é o parametro?
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
E ai Ademilso, resolveu?
Aguardo...
Abraços
Att
Luiz Maia
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