Usuário com melhor resposta
Trabalhando com Sessão Asp.Net

Pergunta
-
Tenho um sistema desenvolvido em ASP.NET C#, o mesmo é configurado no IIS e está funcionando perfeitamente, porém acontece o seguinte, eu acesso um banco pelo sistema, e um outro usuário vai acessar o outro banco, isto em equipamentos distintos, porém as sessões se misturam, e acaba que troca o banco. Exemplo, o primeiro usuário, acessa o banco 1, no caso o outro usuário, acessa o banco 2, então o primeiro usuário, começa a acessar o banco 2. Como posso consertar este problema? Ele já tem sessões, porém ele só verifica se ela é válida. Qual é a melhor forma?
Respostas
-
Mariana, então acredito que o problema pode ser esse.
Invés de deixar isso numa variável tente utilizar na Página Inicial no momento de atribuir o valor de empresa dessa forma:
Session["empresa"] = empresa;
E na sua função use assim:
public static SqlConnection AbreBanco() { System.IO.StreamReader arquivo = new System.IO.StreamReader(@"C:\web\configurador.txt"); string linha = ""; while (true) { linha = arquivo.ReadLine(); if (linha != null) { string host = linha; string usuario = "banco"; string senha = "123123"; string banco = "a" + Session["empresa"].ToString(); try { SqlConnection conexao = new SqlConnection("Data Source=192.168.0.3,220;DATABASE=" + banco + ";UID=" + usuario + "; PWD=" + senha + "; Min Pool Size=5;Max Pool Size=250; Connect Timeout=3;"); conexao.Open(); return conexao; } catch { HttpContext.Current.Response.Redirect("NaoCliente.aspx"); } } else break; } return null; }
Att, Lucio Rogerio
Espero ter ajudado, se ajudei, por favor Vote como Útil, e se resolvi seu problema, clique em Marcar como Resposta.- Sugerido como Resposta Juliano Nunes Silva Oliveira sexta-feira, 2 de fevereiro de 2018 18:14
- Marcado como Resposta Mariana C. Costa segunda-feira, 5 de fevereiro de 2018 16:11
sexta-feira, 2 de fevereiro de 2018 12:51 -
Se a classe estiver no projeto web, use
HttpContext.Current.Session["empresa"]
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
- Sugerido como Resposta Lucio Rogerio SPBanned sexta-feira, 2 de fevereiro de 2018 18:00
- Marcado como Resposta Mariana C. Costa segunda-feira, 5 de fevereiro de 2018 16:11
Todas as Respostas
-
-
Como que você controla a conexão de cada usuário? Digo, onde você armazena a string de conexão?
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
-
Bom dia Juliano, utilizo uma classe, com o método AbreConexão();
public static SqlConnection AbreBanco() { System.IO.StreamReader arquivo = new System.IO.StreamReader(@"C:\web\configurador.txt"); string linha = ""; while (true) { linha = arquivo.ReadLine(); if (linha != null) { string host = linha; string usuario = "banco"; string senha = "123123"; string banco = "a" + empresa; try { SqlConnection conexao = new SqlConnection("Data Source=192.168.0.3,220;DATABASE=" + banco + ";UID=" + usuario + "; PWD=" + senha + "; Min Pool Size=5;Max Pool Size=250; Connect Timeout=3;"); conexao.Open(); return conexao; } catch { HttpContext.Current.Response.Redirect("NaoCliente.aspx"); } } else break; } return null; }
E quando vou abrir a conexão utilizo o nome da classe, e o nome do método.
clsdb.AbreConexao();
Desta forma. Obrigado.
-
Mas como você diferencia a conexão de cada usuário se o TXT parece ser o mesmo?
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
-
-
-
Não estou entendendo muito bem, Mariana. A linha abaixo você deixou fixa no código acima apenas para exemplo?
System.IO.StreamReader arquivo = new System.IO.StreamReader(@"C:\web\configurador.txt"); string linha = "";
Outra coisa, você diz que o campo banco é um txt solicitado no login. Você se refere txt como sendo um input type=text ou um arquivo txt?
Depois de lido no login, onde você armazena o nome do banco para as próximas conexões?
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
-
Sim, o arquivo existe, mais ainda não está sendo utilizado, a conexão está sendo passada dentro da classe.
Na página default, que é a inicial do sistema, onde é digitado o nome do banco, o identificador e a senha, eu declaro o nome da classe clsdb:
public clsdb banco = new clsdb();
E no click do button entrar, eu preencho a variável com o txt:
banco.Empresa = Empresa.Text;
E esse é o html do Empresa.Text:
<asp:TextBox ID="Empresa" class="form-control" runat="server" placeholder="Código da Empresa"></asp:TextBox>
-
Aí você joga esse objeto banco para a sessão depois de atribuir com as informações digitadas pelo usuário?
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
-
Não, ele fica na classe, a sessão é somente para verificar se a sessão é válida ou não, não sou muito familiarizada com a sessão, na verdade é a primeira vez que eu trabalho com ela, sou novata na web. Então não consigo entender porque ele pega a sessão de outro usuário. Vou fazer o teste conforme o Lucio informou.
-
-
Se a classe estiver no projeto web, use
HttpContext.Current.Session["empresa"]
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
- Sugerido como Resposta Lucio Rogerio SPBanned sexta-feira, 2 de fevereiro de 2018 18:00
- Marcado como Resposta Mariana C. Costa segunda-feira, 5 de fevereiro de 2018 16:11
-
-
-
Show de bola. Qualquer coisa estamos aí.
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.