none
Problemas com minha aplicação quando abro em 2 navegadores. RRS feed

  • 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?

    quarta-feira, 14 de março de 2012 00:36

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
    quarta-feira, 14 de março de 2012 16:57

Todas as Respostas

  • Estes campos cad_venda e idempresa no objeto Perfil são estáticos? Se for, com certeza o problema é este.


    Marcilio S Santos Computer Programmer My intention is the pleasure to solve the puzzle. Helping someone is just a side effect.

    quarta-feira, 14 de março de 2012 02:29
  • mas não esta tendo problemas com o perfil, como pode ver o idempresa recebe de um cookie.
    quarta-feira, 14 de março de 2012 03:14
  • 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
    quarta-feira, 14 de março de 2012 12:34
  • 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.

    quarta-feira, 14 de março de 2012 13:53
  • quando não utilizo ela como static ao usar essa váriavel em outro bloco ex: entra na pagina passo o valor para essa variavel, mas quando vou finalizar a venda e utilizo a variavel ela esta null.

    quarta-feira, 14 de março de 2012 14:51
  • 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
    quarta-feira, 14 de março de 2012 16:57