Rotina que falha de vez em quando.
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
Curtidas 0
Respostas
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
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
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
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
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
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
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
13/02/2010
Ola Ademilso,
Como esta indo?
Att
Luiz Maia
GOSTEI 0
Ademilso Peres
13/02/2010
Como eu verifico no web.config o tempo de sessão? Qual é o parametro?
GOSTEI 0
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
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
13/02/2010
E ai Ademilso, resolveu?
Aguardo...
Abraços
Att
Luiz Maia
GOSTEI 0
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