Recentemente encontrei algumas dificuldades para publicar uma aplicação ASP.NET MVC em um servidor zerado ou praticamente.
Elo só tinha IIS7.5 com ASP.NET 3.5, então restou para mim instalar o ASP.NET 4.0, o SQL Server Express e depois publicar a aplicação.
O maior problema foi com a geração o deploy do aspnetdb.mdf que é o arquivo de banco de dados que contêm a estrutura e dados para o funcionamento do MemberShip que já vem configurado e pronto para uso com o template de aplicação ASP.NET MVC.
Caso você tenha problemas com a “geração” do banco de dados na pasta App_Data ele pode ser causado por um dos motivos abaixo.
- O servidor de banco de dados não está instalado (SQL Server/ SQL Server Express 2005/2008/2008 R2);
- Você ainda não rodou o comando aspnet_regsql.exe para gerar o banco de dados padrão do ASP.NET no seu servidor de banco de dados;
- Seu banco de dados pode não está rodando, são dois serviços que devem estar rodando, a instância do banco e o SQL Browser;
- O datasource da sua string de conexão pode estar errada, errada entenda o nome da instancia está diferente do nome da instancia configurado na máquina onde você está fazendo o deploy;
Uma coisa interessante é que nesse último caso, apesar de meu “SQL Server Configuration Manager” dizer que o nome da instância era MSSQLSever que foi o nome que eu havia atribuido na instalação o nome era outro. Hahahaha
Como eu descobri isso ? Depois de sofrer horas sem fim..
Eu habilitei o servidor para aceitar conexões remotas que você pode ver como no link abaixo como fazer, após eu realizei a conexão através do SQL Server Management Studio informando o IP da máquina servidora do banco de dados.
Após cliquei com o botão direito em cima do IP que simbolizava a conexão e pedi as propriedades, e para minha supresa só estava o nome da máquina XPTO, e não havia nenhuma menção ao nome da instância.
Então alterei a string de conexão para ficar assim..
<add name=”ApplicationServices” connectionString=”data source=XPTO;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true” providerName=”System.Data.SqlClient” />
Onde XPTO é o nome da máquina onde está instalado o servidor de banco de dados.
Habilitando conexões remotas.
http://blogs.msdn.com/b/walzenbach/archive/2010/04/14/how-to-enable-remote-connections-in-sql-server-2008.aspx
Creating the Application Services Database for SQL Server
http://msdn.microsoft.com/en-us/library/x28wfk74.aspx
Enjoy it !
Leandro Ribeiro