Usuário com melhor resposta
Problemas com minha aplicação quando abro em 2 navegadores.

Pergunta
-
Estou com o seguinte problema: tenho uma aplicação web para o mesmo cliente e esse cliente utiliza em três lojas, ai ele loga no sistema nas três lojas, mas quando ele faz uma venda na loja 1 salva como se fosse da loja 3 ou até da loja 2 e vice-versa, peguei o banco e fiz uma analise na minha maquina(local) ai abri a aplicação logando cada loja em um browser diferente, e percebi que realmente está com esse problema. Estou utilizando um cookie para salvar o id da empresa quando logo, quando recupero jogo em uma variavel veja:
private static int idempresa = 0; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Session["permissao"] != null) { if (Session["permissao"] is perfil && ((perfil)Session["permissao"]).cad_venda.Equals("N")) { Response.Redirect("NaoPermitido.aspx"); } } if (Request.Cookies["user"] != null) { HttpCookie Dados = Request.Cookies["user"]; idempresa = Convert.ToInt32(Dados["idempresa"]); } } }
Como faço para resolver isso?
Respostas
-
O que você pode fazer para isto não acontecer é criar uma classe base e criar um método protegido para retornar o id da empresa do cookie assim:
using System; using System.Web; namespace WebApp { public class PageBase : System.Web.UI.Page { public PageBase() { if (Session["permissao"] != null) { if (Session["permissao"] is perfil && ((perfil)Session["permissao"]).cad_venda.Equals("N")) { Response.Redirect("NaoPermitido.aspx"); } } } protected int ObterIdEmpresa() { if (Request.Cookies["user"] != null) { HttpCookie Dados = Request.Cookies["user"]; return Convert.ToInt32(Dados["idempresa"]); } throw new ApplicationException("Id da empresa não encontrado"); } } } using System; namespace WebApp { public partial class _Default : PageBase { protected void Page_Load(object sender, EventArgs e) { int idempresa = ObterIdEmpresa(); //resto da funcionalidade aqui } } }
espero ter ajudado- Marcado como Resposta Thiago_Porto quarta-feira, 14 de março de 2012 21:34
Todas as Respostas
-
-
-
Se a sua propriedade de controle de ID é estática todos os clientes que efetuarem o acesso receberão o ultimo valor setado na variável.
Analise se realmente existe a necessidade dessa variável estática, acredito que você deixando ela não estática possa resolver o seu problema.
Abraços,
Daniel Benevides
Daniel Benevides
- Sugerido como Resposta Oliveira Felipe quarta-feira, 14 de março de 2012 16:44
- Não Sugerido como Resposta Oliveira Felipe quarta-feira, 14 de março de 2012 16:45
-
Exatamente como explicado pelo Daniel. No contexto web, as variáveis estáticas estão no mesmo espaço e são acessíveis para todos os usuários.
Marcilio S Santos Computer Programmer My intention is the pleasure to solve the puzzle. Helping someone is just a side effect.
-
-
O que você pode fazer para isto não acontecer é criar uma classe base e criar um método protegido para retornar o id da empresa do cookie assim:
using System; using System.Web; namespace WebApp { public class PageBase : System.Web.UI.Page { public PageBase() { if (Session["permissao"] != null) { if (Session["permissao"] is perfil && ((perfil)Session["permissao"]).cad_venda.Equals("N")) { Response.Redirect("NaoPermitido.aspx"); } } } protected int ObterIdEmpresa() { if (Request.Cookies["user"] != null) { HttpCookie Dados = Request.Cookies["user"]; return Convert.ToInt32(Dados["idempresa"]); } throw new ApplicationException("Id da empresa não encontrado"); } } } using System; namespace WebApp { public partial class _Default : PageBase { protected void Page_Load(object sender, EventArgs e) { int idempresa = ObterIdEmpresa(); //resto da funcionalidade aqui } } }
espero ter ajudado- Marcado como Resposta Thiago_Porto quarta-feira, 14 de março de 2012 21:34