Desenvolvimento de Website com ASP.NET e SQL Server – Parte 3

Olá caro leitor!

Dando continuidade aos artigos anterior sobre desenvolvimento de website com ASP.NET e SQL Server. Se você ainda não acompanhou essa série de artigos sobre o desenvolvimento de website com ASP.NET e SQL Server acesse:

Hoje iremos iniciar o desenvolvimento do painel de controle do nosso website.

A intensão é possibilitar ao usuário uma livre administração do website com criação das páginas e seus respectivos conteúdos. O que estamos fazendo nada mais é que um CMS (Content Management Systems) ou Sistema de gerenciamento de conteúdo.

Alguns exemplos de CMS:

  • WordPress
  • BlogEngine.NET
  • Joomla
  • Drupal

Tudo bem que o nosso humilde website não se compara aos citados, mais o conceito é o mesmo, gerenciar conteúdos. Mais nada impede que possa criar algo semelhante e criar funcionalidades adicionais, pois esse é o caminho. Então vamos ao que interessa.

Antes de iniciarmos, faça o download do projeto anterior: Desenvolvimento de Website com ASP.NET e SQL Server - Parte 2.

Abra o projeto e para iniciar, vamos criar uma pasta chamada painel.

Essa será a pasta que conterá todas as páginas que irá gerenciar nosso website.

Dentro dela iremos criar a página de login. Então clique com o botão direito sobre a pasta painel e clique em Add New Item.

Em seguida defina o nome para a página. O nome será login.aspx. Essa página será a responsável por autenticar o usuário.

Agora criaremos uma nova pasta para incluirmos o CSS da página de login. Definiremos o nome dá pasta como css.
Criei também dentro da pasta css um novo arquivo de folha de estilo clicando com o botão direito sobre a pasta css e em seguida Add New Item para criar o arquivo login.css.

Inclua o CSS abaixo.


html, body, form
{
	height: 100%;
}
body
{
    font-family: Tahoma, Verdana, Arial, Sans-Serif, Times New Roman;
    padding: 0;
    margin: 0;
}
#geral
{
	position: relative;
	min-height: 100%;
	background-color: #f09942;
}
* html #geral
{
	height: 100%;
}
fieldset
{
    position:absolute;
    left: 50%;
    top: 50%;
    width: 300px;
    height: 220px;
    padding: 25px;
    margin: -135px 0 0 -175px;
    background-color: #fff;
    border: 1px solid #fff;
    -moz-box-shadow: 0 0 15px #2c2d30;
    -webkit-box-shadow: 0 0 15px #2c2d30;
    -msie-border-radius: 8px;
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
}
fieldset h2
{
    margin: 0;
    padding: 0;
}
fieldset #content_login
{
    margin: 20px 0;
}
fieldset label
{
    display: block;
    padding: 10px 0 0 0;
}
fieldset input[type=text], fieldset input[type=password]
{
    width: 100%;
}
fieldset input[type=button], fieldset input[type=submit]
{
    background-color: #f09942;
    padding: 10px;
    border: 1px solid #f09942;
    -msie-border-radius: 8px;
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
    font-weight: bold;
}

Abra a pagina login.aspx para incluirmos o HTML abaixo.


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="login.aspx.cs" Inherits="painel_login" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        @import url('css/login.css');
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div id="geral">
        <fieldset>
            <h2>Painel de controle</h2>
            <div id="content_login">
                <label>Usuário</label>
                <asp:TextBox ID="txtUsuario" runat="server" />
                <label>Senha</label>
                <asp:TextBox ID="txtSenha" runat="server" TextMode="Password" />
                <br /><br />
                <asp:Button ID="btnAutenticar" Text="Autenticar" runat="server" />    
            </div>
        </fieldset>
    </div>
    </form>
</body>
</html>

Já estamos com nossa página de login definida e agora vamos implementa-la, mais antes precisaremos fazer algumas alterações no banco de dados, na camada de entidade e na camada de negocio.

Para o banco criaremos uma nova tabela chamada USUARIOS. Essa tabela será para armazenar os usuários do painel de controle. Abra o SQL Server Manager e execute o script abaixo.


CREATE TABLE USUARIOS
(
	ID_USUARIO INT IDENTITY(1, 1) NOT NULL,
	NOME_USUARIO VARCHAR(40) NOT NULL,
	EMAIL_USUARIO VARCHAR(100) NOT NULL,
	LOGIN_USUARIO VARCHAR(20) NOT NULL,
	SENHA_USUARIO VARCHAR(32) NOT NULL,
	ATIVO_USUARIO INT, 
	PRIMARY KEY(ID_USUARIO)
)

E agora incluiremos nosso usuário padrão.


INSERT INTO USUARIOS(NOME_USUARIO, EMAIL_USUARIO, LOGIN_USUARIO, SENHA_USUARIO, ATIVO_USUARIO)
VALUES('Administrador', 'admin@admin', 'admin', '21232f297a57a5a743894a0e4a801fc3', 1)

Teremos então os seguintes dados para acesso ao painel de controle.

  • Usuario: admin
  • Senha: admin (Convertido para MD5)

Já temos nossa tabela de usuários, porem precisaremos cria-la na nossa classe de entidades. Abra-o para incluir uma nova classe. Clique com o botão direito sobre o projeto WebSite.Entities e crie um novo item.

Defina o nome como Usuarios.cs.

Vamos definir as propriedades da Classe.


using System;

namespace WebSite.Entities
{
    public class Usuarios
    {
        public int Id { get; set; }
        public string Nome { get; set; }
        public string Email { get; set; }
        public string Login { get; set; }
        public string Senha { get; set; }
        public bool Ativo { get; set; }

        public Usuarios()
        {

        }

        public Usuarios(int Id)
        {
            this.Id = Id;
        }

        public Usuarios(string Login)
        {
            this.Login = Login;
        }

        public Usuarios(string Login, string Senha)
        {
            this.Login = Login;
            this.Senha = Senha;
        }

        public Usuarios(int Id, string Nome, string Email, string Login, string Senha, bool Ativo)
        {
            this.Id = Id;
            this.Nome = Nome;
            this.Email = Email;
            this.Login = Login;
            this.Senha = Senha;
            this.Ativo = Ativo;
        }
    }
}

Já temos definido como será nossa entidade. Agora podemos partir para a atualização da camada de negocio.
Abra o projeto WebSite.Business e crie uma nova classe chamado de Usuario.cs.

Implemente-a conforme o código abaixo.


using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Data;
using System.Linq;

namespace WebSite.Business
{
    public class Usuarios
    {
        private string ConnectionString = ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString;
        public bool Erro { get; set; }
        public string MensagemErro { get; set; }

        public Usuarios()
        {
            this.Erro = false;
            this.MensagemErro = string.Empty;
        }

        public Entities.Usuarios AutenticaUsuario(string Login, string Senha)
        {
            Entities.Usuarios[] usuarios = ListaUsuarios(new Entities.Usuarios(Login, Senha));
            Entities.Usuarios usuario = usuarios.FirstOrDefault();

            if (usuario == null)
            {
                this.Erro = true;
                this.MensagemErro = "Usuário ou senha inválido";
            }

            return usuario;
        }

        public bool LoginCadastrado(string Login)
        {
            Entities.Usuarios[] usuarios = ListaUsuarios(new Entities.Usuarios(Login));
            Entities.Usuarios usuario = usuarios.FirstOrDefault();
            
            bool existe = usuario != null &amp;&amp; usuario.Id > 0;

            return existe;
        }

        public Entities.Usuarios[] ListaUsuarios()
        {
            return ListaUsuarios(null);
        }

        public Entities.Usuarios[] ListaUsuarios(Entities.Usuarios usuario)
        {
            List<Entities.Usuarios> lstUsuarios = new List<Entities.Usuarios>();

            Data.Connection connection = new Data.Connection(this.ConnectionString);
            connection.AbrirConexao();

            StringBuilder sqlString = new StringBuilder();
            sqlString.AppendLine("select * from usuarios");

            if (usuario != null)
            {
                sqlString.AppendLine("where 1 = 1");

                if (usuario.Id > 0)
                {
                    sqlString.AppendLine("and id_usuario = " + usuario.Id + "");
                }

                if (!string.IsNullOrEmpty(usuario.Login) &amp;&amp; usuario.Login.Length > 0)
                {
                    sqlString.AppendLine("and login_usuario like '" + usuario.Login.Replace("'", "''") + "'");
                }

                if (!string.IsNullOrEmpty(usuario.Senha) &amp;&amp; usuario.Senha.Length > 0)
                {
                    sqlString.AppendLine("and senha_usuario = '" + usuario.Senha + "'");
                }
            }

            IDataReader reader = connection.RetornaDados(sqlString.ToString());

            int idxId = reader.GetOrdinal("ID_USUARIO");
            int idxNome = reader.GetOrdinal("NOME_USUARIO");
            int idxEmail = reader.GetOrdinal("EMAIL_USUARIO");
            int idxLogin = reader.GetOrdinal("LOGIN_USUARIO");
            int idxSenha = reader.GetOrdinal("SENHA_USUARIO");
            int idxAtivo = reader.GetOrdinal("ATIVO_USUARIO");

            while (reader.Read())
            {
                Entities.Usuarios _Usuario = new Entities.Usuarios();
                _Usuario.Id = reader.GetInt32(idxId);
                _Usuario.Nome = reader.GetString(idxNome);
                _Usuario.Email = reader.GetString(idxEmail);
                _Usuario.Login = reader.GetString(idxLogin);
                _Usuario.Senha = reader.GetString(idxSenha);
                _Usuario.Ativo = reader.GetInt32(idxAtivo) == 1;

                lstUsuarios.Add(_Usuario);
            }

            connection.FechaConexao();

            return lstUsuarios.ToArray();
        }

        public bool SalvaUsuario(Entities.Usuarios usuario)
        {
            bool salvou = false;

            if (usuario != null)
            {
                Data.Connection connection = new Data.Connection(this.ConnectionString);
                connection.AbrirConexao();

                StringBuilder sqlString = new StringBuilder();

                if (usuario.Id > 0)
                {
                    sqlString.AppendLine("update usuarios set");
                    sqlString.AppendLine("nome_usuario = '" + usuario.Nome.Replace("'", "''") + "',");
                    sqlString.AppendLine("email_usuario = '" + usuario.Email.Replace("'", "''") + "',");
                    sqlString.AppendLine("login_usuario = '" + usuario.Login.Replace("'", "''") + "',");
                    sqlString.AppendLine("ativo_usuario = " + (usuario.Ativo ? 1 : 0) + " ");
                    sqlString.AppendLine("where id_usuario = " + usuario.Id + "");
                }
                else
                {
                    if (!LoginCadastrado(usuario.Login))
                    {
                        sqlString.AppendLine("insert into usuarios(nome_usuario, email_usuario, login_usuario, senha_usuario, ativo_usuario)");
                        sqlString.AppendLine("values('" + usuario.Nome.Replace("'", "''") + "', '" + usuario.Email.Replace("'", "''") + "', '" + usuario.Login.Replace("'", "''") + "', '" + usuario.Senha.Replace("'", "''") + "', " + (usuario.Ativo ? 1 : 0) + ")");
                    }
                    else
                    {
                        this.Erro = true;
                        this.MensagemErro = "Login já está sendo utilizado.";
                    }
                }

                int i = connection.ExecutaComando(sqlString.ToString());
                salvou = i > 0;

                connection.FechaConexao();
            }

            return salvou;
        }

        public bool SalvaUsuario(int Id, string Nome, string Email, string Login, string Senha, bool Ativo)
        {
            return SalvaUsuario(new Entities.Usuarios(Id, Nome, Email, Login, Senha, Ativo));
        }
        
        public bool ExcluiUsuario(Entities.Usuarios usuario)
        {
            bool salvou = false;

            if (usuario != null &amp;&amp; usuario.Id > 0)
            {
                Data.Connection connection = new Data.Connection(this.ConnectionString);
                connection.AbrirConexao();

                StringBuilder sqlString = new StringBuilder();
                sqlString.AppendLine("delete from usuarios");
                sqlString.AppendLine("where id_usuario = " + usuario.Id + "");

                int i = connection.ExecutaComando(sqlString.ToString());

                connection.FechaConexao();
            }

            return salvou;
        }

        public bool ExcluiUsuario(int Id)
        {
            return ExcluiUsuario(new Entities.Usuarios(Id));
        }
    }
}

Pronto! Temos nossa nova tabela criada, camada de entidades e camada de negócios atualizada.

Como pode ver, a nossa classe Usuarios da camada de negocio em partes possui as mesmas funcionalidades que a classe Paginas. O seu único diferencia é os métodos para verificar se o login do usuário já esta cadastrado e o método para autenticar o usuário.

Outro detalhe é as propriedades criadas para retorno de mensagem de erro caso ocorra. No caso de utilizarmos o método LoginCadastrado para verificar se um determinado login está em uso e esse esteja poderemos retornar uma mensagem por meio da propriedade MensagemErro.

Vamos implementar agora a página login.aspx. Para isso abra a página de login para adicionarmos evento ao botão de autenticação. De duplo clique sobre ele e vamos adicionar o código do evento btnAutenticar_Click.


    protected void btnAutenticar_Click(object sender, EventArgs e)
    {
        string Login = txtUsuario.Text;
        string Senha = txtSenha.Text;

        Senha = FormsAuthentication.HashPasswordForStoringInConfigFile(Senha, "MD5");

        WebSite.Business.Usuarios usuariosBO = new WebSite.Business.Usuarios();
        WebSite.Entities.Usuarios usuario = usuariosBO.AutenticaUsuario(Login, Senha);

        if (!usuariosBO.Erro &amp;&amp; usuario.Id > 0)
        {
            Response.Redirect("default.aspx");
        }
        else
        {
            ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "msgbox", "alert('" + usuariosBO.MensagemErro + "')", true);
        }
    }

No evento do botão iremos recuperar os dados digitados pelo usuário nos TextBox. No caso da senha, iremos converte-lo para MD5 e instanciar nossa camada de negocio para autenticar o usuário e redireciona-lo para a página principal e caso ele não tenha fornecido sua credencial corretamente será notificado.

Veja como ficou minha tela de login do painel de controle.

No próximo artigo iremos criar as páginas internas, controle de sessão e segurança do nosso painel de controle. Veja alguns dos tópicos que abordaremos no próximo artigo.

  • Controle de sessão
  • Criação das telas de gerenciamento de usuário

Faça download do projeto: Desenvolvimento de Website com ASP.NET e SQL Server - Parte 3.

Não deixe de participar do fórum. Siga o C# Brasil no Twitter e Facebook.

Até o próximo artigo e bons estudos!

62 comentários sobre “Desenvolvimento de Website com ASP.NET e SQL Server – Parte 3

  1. Artigos Excelentes, todos os tópicos abordados são muito bons, valeu mesmo Rafael, só uma coisa, começei fazer os exemplos, usando um website em branco, quais referencias devo usar no web.config para que o projeto funcione perfeitamente.
    obs: baixei seu código e no web.config tem muitas informações, todas são necessárias? se não quais referencias são essenciais para o funcionamento do projeto.
    dede já Obrigado, e parabéns pelos artigos.

  2. Raphael.

    Duas coisas que não foi mencionado, fica a dica pra galera que estiver desenvolvendo.

    No cs da login pra usar a classe FormsAuthentication deverá ser definido a namespace using “System.Web.Security;”
    no meu VS não veio setado como padrão, tive que escrever o código na mão.

    Pra conseguir obter o CSS da Login, você tem que sair da pasta painel, o código da @import ficaria assim “@import url(‘../css/login.css’);” invés de “@import url(‘css/login.css’);”

    Excelente artigo

    Abraços!!!

  3. Caramba cara, que post sinistro!
    Por Favor não páre!

    Eu ainda não iniciei o projeto, estive passando o olho no tutorial para ver se era o que estava precisando e me surpreendi!

    Mt bom mesmo, parabéns!

  4. Rafael, estou com um problema grave..
    Estou tentando utilizar o seu Artigo, mais usando a Framework 4.0 e o banco de dados mysql, cara dou debug em minha aplicação ele passa pelo metodo de AbrirConexao passa numa boa quando vai fazer o MySqlDataReader ele diz q a conexão está fechada…

    Teria como me ajudar???
    Aguardo seu retorno, valeu!!!

    1. Duas situações.
      1- Você informou o connection para o command?
      2- você verificou se a conexão e aberta antes da leitura do reader?

      Veja isso e me fale. Caso não de certo você poderia me mandar o código de conexão?

      Abraço!

  5. Muito bom o artigo meu caro ! É útil mesmo para quem já tem algum conhecimento porque mostra na prática esses conceitos de arquitetura e o uso de componentes asp.net.

  6. Meus Parabéns Brother pelo artigo, estou aprendendo muito com o desenvolvimento em camadas.

    Se não for pedir muito, poderia um dia publicar o mesmo assunto só que em ASP.NET MVC ? Seria legal tb aprender com sua forma didática de ensinar e ilustrar as coisas.

    Abraços e Bons Estudos Galera

  7. Raphael,
    Parabéns pelos artigos estão nota 10!

    na pagina editar_usuario.aspx esta dando erro nessa linha:

    bool Salvou = usuariosBO.SalvaUsuario(usuario);
    – No overload for method ‘SalvaUsuario’ takes 1 arguments

    a IDE sugere gerar na camada de negocios:

    public bool SalvaUsuario(WebSite.Entities.Usuarios usuario)
    {
    throw new NotImplementedException();
    }

    mas na hora de editar ou salvar ele para nessa exception.

    Aguardo, obrigado!

  8. Raphael,

    Erro meu mesmo! na camada de negócios na parte do método SalvaUsuario que verifica se o usuario foi salvo tinha havia digitar “SalvarUsuario” então estava gerando este erro.

    Obrigado pela atenção!

  9. Raphael Cardoso… seus posts são excelentes… e de fácil entendimento.. Parabéns…
    Não consigo entender.. mas Estou com um probleminha na classe Usuário da BO… Acredito que seja alguma coisa referente a sobrecarga do método, pois não existe métodos com somente esses parametros (login e Senha)…
    Erro Apresentado:
    “The best overloaded method match for ‘WebSite.Entities.Usuarios.Usuarios(int)’ has some invalid arguments”
    Código:
    public Entities.Usuarios AutenticaUsuario(string Login, string Senha)
    {
    Entities.Usuarios[] usuarios = ListaUsuarios(new Entities.Usuarios(Login, Senha));

    Entities.Usuarios usuario = usuarios.FirstOrDefault();

    if (usuario == null)
    {
    this.Erro = true;
    this.MensagemErro = “Usuário ou Senha Inválido”;
    }

    return usuario;
    }

    Fico No Aguardo!!! Obrigado

  10. Corrigindo.. o Erro Apresentado é:

    ‘WebSite.Entities.Usuarios’ does not contain a constructor that takes 2 arguments.

  11. Estavam todas as classes publicas… porém não tinha criado as sobrecargas para esse metodo.. e tbm precisei excluir e incluir as referencias novamente… Obrigado Raphael..

  12. Parabéns pelo tutorial e pela iniciativa em ajudar os que estão iniciando!!

    Comecei a estudar estes posts recentemente e tenho uma dúvida: o código para o botão de autenticação ficará em Painel/Login.aspx.cs?

    Se sim, no meu caso, ocorre erro em txtUsuário.Text e txtSenha.Text (não existem no contexto atual…).

  13. Boa tarde.

    Ao executar a aplicação, a minha tela de Login está sendo exibida somente a metade na parte superior da tela.

    Alguém pode me orientar sobre o que posso ter feito de errado e me ajudar a corrigir?

  14. Raphael,

    como eu havia alterado demais o fonte para tentar resolver eu recomecei o projeto. O erro que tenho agora é com relação ao System.Linq.

    Como faço para adiciona-lo? Já procurei mas não encontrei esta referencia. (Na web diz para incluir o System.Core, mas já o fiz e o erro persiste…).

    Obrigado pela atenção e pelo excelente post.

  15. Raphael, o erro é este:

    “Erro 3 Nome do espaço para nome ou tipo ‘Linq’ não existe no espaço para nome ‘System’. Precisa de uma referência de módulo (assembly)?”

    1. Otávio, você conseguiu adicionar a referência System.Core?
      Eu fiz um teste aqui e removi o meu de um projeto. Ao tentar incluir, ele dá erro.
      A alternativa para solucionar o problema é abrir o arquivo de extensão csproj do seu projeto e incluir a referencia manualmente.
      Em ItemGroup, adicione a seguinte informação.

      Segue alguns links de referência:

      Lee Brandt’s Blog – Do NOT remove the reference to System.Core from your VS2010 Project
      Microsoft Connect – Cannot remove System.Core.dll reference from a VS2010 project

      Acredito que essa será a solução para o seu problema.
      Faça um teste e nos de um Feedback.

      Abraço

  16. Olá Raphael,

    na realidade eu refiz toda a aplicação e ai o erro parou de ocorrer.

    Para continuar a estudar eu iniciei um novo projeto e estou utilizando a estrutura do seu exemplo para realizar a conexão, consultas, etc.

    Após informar o usuário e senha é exibida a mensagem: System.NotImplementedException: O método ou a operação não está implementada.”

    Você pode me orientar em como implementar este método, fazendo favor?

    Grato pela atenção.

  17. Olá Raphael, obrigado pelo retorno. Ficou Ok.

    Uma dúvida: como faço para posicionar o cursor no primeiro campo? (p.ex: no campo Usuário da tela de login).

  18. Fiz a publicação de um site de testes (localhost) e, ao executar, é exibida a seguinte mensagem no browser:

    “Parser Error Message: Could not load the assembly ‘App_Web_kbqt34w3’. Make sure that it is compiled before accessing the page.”

    Source error:
    Line 1:
    Line 2:
    Line 3:

    Source File: /WebSite/Login/default.aspx Line: 1

    Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1

    Alguém pode me orientar, fazendo favor?

    1. Olá Otávio, clique com o botão direito sobre o Solution da sua aplicação, clique em “Clean Solution“. Após isso, “Rebuild Solution” para recompilar e tente publica-la novamente.

  19. Raphael, fiz da forma que você orientou mas o erro permanece:

    Server Error in ‘/’ Application.

    Parser Error

    Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

    Parser Error Message: Could not load the assembly ‘App_Web_y4mkuywx’. Make sure that it is compiled before accessing the page.

    Source Error:

    Line 1:
    Line 2:
    Line 3:

    Source File: /WebSite/MasterPage.master Line: 1

    Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1

    1. Olá Otávio. Não estou entendo o porque sua aplicação está dando esse erro. A solução que lhe dei era para ter resolvido.
      Como está a configuração da sua aplicação? Está rodando no IIS? Já verificou permissão do diretório da aplicação?
      Tem como você me mandar sua aplicação para que eu possa ver o que tem de errado? Se sim, mande para raphael arroba csharp brasil ponto com ponto br com o assunto “[C# Brasil] Artigo 3113”. Aguardo envio do mesmo e-mail que utilizou no comentário.

      Abraço

  20. Olá Raphael sou iniciante em ASP e estou com um problema….
    Quando gero esse código no Visual Studio apresenta o seguinte erro…O melhor método esta sobrecarregado para ‘WebSite.Business.Usuarios.ListaUsuarios (Entities.Usuarios)’ tem alguns argumentos inválidos C: Users thalita.barros Conexao com Banco WebSite.Business Usuarios.cs, porem estava lendo alguns artigos mais não consigo encontrar nada que possa me ajudar em relação a esse erro.Lembrando que ocorre na parte de ListaUsuarios(null); Será que poderia me ajudar???

  21. Ok…Raphael consegui resolver o Problema na verdade era um simples problema com a classe Usuário do WebSite.Entities mais consegui achar esse erro… Fico Grata….
    A proposito estou adorando as aulas….. aprendendo bastante… Valew….!!!

  22. Estou criando minha app e esta apresentando erro ao subir no navegador como localhost.

    Directory Listing — /

    Sunday, June 30, 2013 01:53 AM bin
    Sunday, June 30, 2013 01:50 AM imagem_transparente$
    Sunday, June 30, 2013 01:54 AM 967 MasterPage.Master
    Sunday, June 30, 2013 01:11 AM 340 MasterPage.Master.cs
    Sunday, June 30, 2013 01:13 AM 779 MasterPage.Master.designer.cs
    Sunday, June 30, 2013 01:09 AM obj
    Sunday, June 30, 2013 01:51 AM 11,115 PRJWebSite.csproj
    Sunday, June 30, 2013 01:51 AM 1,086 PRJWebSite.csproj.user
    Sunday, June 30, 2013 01:09 AM Properties
    Sunday, June 30, 2013 01:20 AM Styles
    Sunday, June 30, 2013 01:09 AM 2,002 Web.config
    Sunday, June 30, 2013 01:09 AM 1,285 Web.Debug.config
    Sunday, June 30, 2013 01:09 AM 1,346 Web.Release.config

    Version Information: ASP.NET Development Server 10.0.0.0

    Alguem pode me ajkudar por favor??? Nao sei mais o que fazer…

    Obrigado.

  23. Raphael, boa noite!

    Apresenta este erro abaixo.

    —————————-ERRO—————————-
    Directory Listing — /

    Sunday, June 30, 2013 01:53 AM bin
    Sunday, June 30, 2013 01:50 AM imagem_transparente$
    Sunday, June 30, 2013 01:54 AM 967 MasterPage.Master
    Sunday, June 30, 2013 01:11 AM 340 MasterPage.Master.cs
    Sunday, June 30, 2013 01:13 AM 779 MasterPage.Master.designer.cs
    Sunday, June 30, 2013 01:09 AM obj
    Sunday, June 30, 2013 01:51 AM 11,115 PRJWebSite.csproj
    Sunday, June 30, 2013 01:51 AM 1,086 PRJWebSite.csproj.user
    Sunday, June 30, 2013 01:09 AM Properties
    Sunday, June 30, 2013 01:20 AM Styles
    Sunday, June 30, 2013 01:09 AM 2,002 Web.config
    Sunday, June 30, 2013 01:09 AM 1,285 Web.Debug.config
    Sunday, June 30, 2013 01:09 AM 1,346 Web.Release.config

    —————————-ERRO—————————-

    Obrigado pela força…

  24. Então Raphael é apenas este erro. O que acontece é o seguinte criei um projeto como ASP.NET Aplication apaguem todas as pastas que é criada por default e criei um novo layout e na aplicação não esta apresentando nenhum este erro só ocorre na obra que carrega no Browser. Pesquisei em outros Blogs e estão falando que tem que setar a pagina pois não esta puxando a pagina na hora que carrega, então fui no caminho informado e setei a mesma mas o erro continua.

  25. Oi Raphael, tudo bem?
    Gostei muito e estou seguindo essa série para a criação de um website.
    Estou com o mesmo erro que o Wollny relatou mais acima. Está apresentando na página login que txtUsuário.Text e txtSenha.Text não existem no contexto atual.
    Já confirmei que coloquei as informações HTML na página login.aspx, mas a página login.aspx.cs continua dizendo que o txtUsuario.Text e txtSenha.Text não estão no contexto atual.
    Peguei alguns exemplos na Net em outros locais e aparentemente a referência para um objeto html estão similares ao que está presente no artigo e a que eu fiz.
    Tem alguma idéia? Obrigado.

  26. Rafael,

    Estou tentando rodar as paginas mas o css não esta funcionando, fica aparecendo @import na pagina web. O que estou fazendo de errado ja tentei usar link href tb não deu certo

  27. Olá Raphael!
    Estou com problema no ConfigurationManager.
    Dá o seguinte erro: “The name ‘ConfigurationManager’ does not exixt in the current context.

  28. Cara.. parabens pelo tutorial, muito bom mesmo.. me quebrou um galhão…

    Estou com um problema q “contornei” mais ou menos.. pq só
    da local, no meu host funcionou normal…

    ele apresenta o seguinte problema:

    Nome inválido objeto ‘usuarios’.

    Descrição: Ocorreu UMA Exceção SEM TRATAMENTO Durante um Execuções da Atual solicitação da Web. Examine o Rastreamento de pilha Para obter Mais INFORMAÇÕES SOBRE o Erro e Onde FOI originado no Código. Detalhes da Exceção: System.Data.SqlClient.SqlException: Invalid object name ‘usuarios’. Erro de Origem:

    tem alguma alteração que preciso fazer no banco?

    Muito obrigado.

    Abraços

    1. Olá Marcelo, tudo bem?.

      O erro está indicando que o objeto indicado na sua query não existe ou é inválido. Tudo leva a crer que não exista a tabela com nome usuarios. Veja se o nome da tabela esta correta ou se o seu banco é CASE SENSITIVE pois nesse caso irá diferenciar USUARIOS de usuarios ou de Usuarios. Tudo leva a crer que esse seja o problema.

      Para acertar isso, verifique como está o nome da tabela no banco e altere na aplicação da mesma forma que esta no banco. Já tive esse problema no meu caso com o MySql que localmente funcionava e remotamente não.

      Qualquer coisa, deixa aqui depois seu comentário.
      Abraço

  29. Fala Raphael.. blz cara?

    Não sei por causa, motivo, razão ou circunstância a tabela não tinha sido criada no sql local, por isso o erro.. isso que dá trabalhar com várias conexões abertas.. devo ter colado o script no arquivo de backup apertado f5 e nem notado q não gravou..
    mas desde ja agradeço sua atenção.

    abraços

Os comentários estão fechados.