O formato da cadeia de inicialização não está em conformidade com a especificação iniciando no índice 0

142

Eu tenho um aplicativo ASP.Net que funciona bem na minha máquina de desenvolvimento local.

Quando executo este aplicativo online, ele mostra o seguinte erro

O formato da cadeia de inicialização não está em conformidade com a especificação iniciando no índice 0

GS Bhangal
fonte
1
Você provavelmente faz uma chamada / conexão incorreta com o sql. Se você pesquisar no blog
Aristos
1
A resposta mais votada em stackoverflow.com/questions/9040266/… parece ser mais precisa do que a mais votada aqui: embora a cadeia de conexão que você usa no desenvolvimento possa funcionar, a publicação precisa fornecer uma cadeia de conexão diferente apropriada para a produção e isso pode falhar. Por exemplo, a pessoa que fez a pergunta achou que a conexão era "$ (ReplacableToken_mcn-Web.config Connection String_0)", que indica que a substituição que deveria ter acontecido como parte da publicação não aconteceu.
Div17

Respostas:

183

Verifique sua cadeia de conexão. Se você precisar de ajuda, verifique o Connection Strings , que possui uma lista dos mais usados.

Strings de conexão comumente usadas:

SQL Server 2012

Segurança padrão

Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;

Conexão confiável

Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

Conexão com uma instância do SQL Server

A sintaxe do nome do servidor / instância usada na opção do servidor é a mesma para todas as seqüências de conexão do SQL Server.

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;

SQL Server 2005

Segurança padrão

Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;

Conexão confiável

Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

Conexão com uma instância do SQL Server

A sintaxe do nome do servidor / instância usada na opção do servidor é a mesma para todas as seqüências de conexão do SQL Server.

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;Password=myPassword;

MySQL

Padrão

Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

Especificando a porta TCP

Server=myServerAddress;Port=1234;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

Oráculo

Usando o TNS

Data Source=TORCL;User Id=myUsername;Password=myPassword;

Usando segurança integrada

Data Source=TORCL;Integrated Security=SSPI;

Usando o ODP.NET sem o tnsnames.ora

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));User Id=myUsername;Password=myPassword;
Hanlet Escaño
fonte
9
Meu problema não está relacionado à conexão incorreta. Consigo conectar-me da máquina do desenvolvedor à produção db e usá-la. Quando implanto as mesmas configurações, estou recebendo esse erro. Você tem idéia do que poderia dar errado? Obrigado
Denis Besic
3
Pode haver muitas coisas acontecendo em Denis. Primeiro, seu servidor e sua máquina de desenvolvimento estão na mesma rede? Que tipo de login você está usando? Você está usando algum tipo de proxy, está protegido por um firewall no servidor prod? Está entrando em alguma VPN?
Hanlet Escaño
2
Não tenho certeza de quem é o responsável, é o Visual Studio, a Ferramenta de Implantação da Web ou a hospedagem do smarterasp.net. Quando o aplicativo foi implantado, algo mudou minha cadeia de conexão. Eu acessei diretamente o web.config e atualizei-o manualmente e ele funciona. Obrigado pelo seu tempo com +1;)
Denis Besic
Não está funcionando, tentei colocar a string de conexão correta.
Alguém pode ver esta pergunta? stackoverflow.com/questions/46167682/…
18

Isso pode ajudar alguém. Minha senha continha um ponto-e-vírgula, então estava enfrentando esse problema. Então, a senha foi adicionada entre aspas. Foi realmente um erro bobo.

Eu mudei o seguinte:

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password=pass;word" providerName="System.Data.SqlClient" />

para

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='pass;word'" providerName="System.Data.SqlClient" />
Abdul Rehman Sayed
fonte
Sim, esse foi o meu problema. Minha senha tinha um; então adicionando o '' resolveu
Claudio
11

Defina o projeto que contém sua DbContextclasse como o projeto de inicialização.

Eu estava recebendo esse erro ao ligar enable-migrations. Mesmo que Package Manager Consoleeu tenha escolhido o certo Default project, ele ainda estava olhando o arquivo web.config desse projeto de inicialização, onde a cadeia de conexão não estava presente.

Mart
fonte
4
+1. Eu acho que o projeto inicial deve ser o projeto que contém a cadeia de conexão. Este foi o meu problema. Obrigado pela sua sugestão de projeto de inicialização.
Tchaps
4

Verifique se a string de conexão está neste formato:

servidor = FOOSERVER; banco de dados = BLAH_DB; pooling = false; Tempo limite de conexão = 60; Segurança integrada = SSPI;

Se a sua string estiver faltando a servertag, o método retornará com esse erro.

DBNoob
fonte
4

Eu tive o mesmo problema. Localmente, o site funcionava bem, mas no azul ele falharia com a mensagem acima.

Acontece que o problema foi definir a cadeia de conexão no ctor, assim:

    public DatabaseContext() 
    {
        Database.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
    }

NÃO funciona, isso irá:

    public DatabaseContext() : base("db")
    {
    }

Me bate..

Flores
fonte
Esta é uma solução tão estranha, mas também salvou minha vida. Para o registro, "db" é o nome da chave da sua seqüência de conexão no arquivo de configuração (o meu não era "db")
mike
Corrigido para mim também. Eu tinha uma string de conexão válida, mas defini-la manualmente lançou o "Formato da string de inicialização não está em conformidade com a especificação iniciando no índice 0".
Sardaukar 30/03
4

Verifique sua string de conexão como eu esqueço de adicionar services.AddDbContext<dbsContext>(options => options.UseSqlServer("Default"));

Isso causa o erro e aqui, quando adiciono Configuration.GetConnectionString, resolve o problema

como agora a conexão é:

services.AddDbContext<dbsContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Default")));

funciona bem (esse problema foi resolvido para o núcleo .net)

user8099291
fonte
3

A referência ao caminho sp completo resolveu esse problema para mim:

var command = new SqlCommand("DatabaseName.dbo.StoredProcedureName", conn)
anon
fonte
2

Eu tive o mesmo erro. No meu caso, isso ocorreu porque estava faltando uma cotação de fechamento para a senha na cadeia de conexão.

Alterado a partir deste

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password" providerName="System.Data.SqlClient" />

Para

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password'" providerName="System.Data.SqlClient" />
Amer Bashoeb
fonte
Escreva um código de exemplo ou qualquer outra coisa para tornar sua resposta perfeita. Uma linha does't explicar tudo
Manish Kumawat
Certo. Editou minha resposta acima.
precisa saber é o seguinte
1

Isso também acontece quando você copia uma página da Web de uma solução para outra, depois executa a solução e descobre que ela tem um nome de cadeia de conexão diferente no webconfig. Em seguida, você altera de forma descuidada o nome da cadeia de conexão no painel de propriedades na visualização de design da página.

Melhor apenas alterá-lo na parte do código, em vez do design.

Gellie Ann
fonte
1

Meu problema foi que eu adicionei o código de log do banco de dados ao meu construtor para um objeto DB, e isso pareceu causar estragos no meu perfil de implantação do Azure.

FYI - Simplifiquei este exemplo, no código real isso foi desativado na produção (mas ainda no código)

public class MyDB : DbContext
{
    public MyDB()
    {
         this.Database.Log = x => { Debug.WriteLine(x); };
    }
}
Aaron Sherman
fonte
1

Eu tive erro de digitação nas minhas seqüências de conexão "Database == PESitecore1_master"

<add name="master" connectionString="user id=sa;password=xxxxx;Data Source=APR9038KBD\SQL2014;Database==PESitecore1_master"/>
Azadeh Khojandi
fonte
1

Eu tive o mesmo problema e, finalmente, consegui resolvê-lo da seguinte maneira:

O problema estava na definição da cadeia de conexão no meu web.config.

<add name="DefaultConnection" connectionString="DefaultConnection_ConnectionString" providerName="System.Data.SqlClient"/>

O exemplo acima funcionou perfeitamente localmente, porque eu usei um banco de dados local ao gerenciar usuários e funções. Quando transferi meu aplicativo para o IIS, o banco de dados local não estava mais acessível, além disso, eu gostaria de usar meu banco de dados no SQL Server. Então, eu altero a seqüência de conexão acima o seguinte equivalente ao DB do SQL Server:

<add name="DefaultConnection" connectionString="data source=MY_SQL_SERVER; Initial Catalog=MY_DATABASE_NAME; Persist Security Info=true; User Id=sa;Password=Mybl00dyPa$$" providerName="System.Data.SqlClient"/>

OBSERVAÇÃO: O acima exposto também supõe que você usará o mesmo SQL Server na sua caixa local (caso você o incorpore ao seu web.config local - foi exatamente isso que fiz no meu caso).

Andreas Venieris
fonte
1

Eu tive o mesmo problema, descobri que a implantação no IIS não definia as cadeias de conexão corretamente. eram '$ (ReplacableToken_devConnection-Web.config Connection String_0)' ao exibir as cadeias de conexão do site no IIS, em vez da cadeia de conexão real. Eu os atualizei lá, e tudo funcionou como esperado

Jason
fonte
você pode plz elaborar mais?
TechnicalKeera
Eu também tenho o mesmo problema, e sofrendo de 3 semanas stackoverflow.com/questions/48929891/…
TechnicalKeera
1

Copiei e colei minha configuração de cadeia de conexão no meu projeto de teste e comecei a executar esse erro. A cadeia de conexão funcionou bem no meu projeto WebAPI. Aqui está a minha correção.

var connection = ConfigurationManager.ConnectionStrings["MyConnectionString"];
var unitOfWork = new UnitOfWork(new SqlConnection(connection.ConnectionString));
Kris Kilton
fonte
1

Eu removi & quot no final da string de conexão e funcionou

Ao invés de

App=EntityFramework&quot;

Usava

App=EntityFramework;

Defina DefaultConnection como abaixo

<add name="DefaultConnection" connectionString="data source=(local);initial catalog=NamSdb;persist security info=True;user id=sa;password=sa;MultipleActiveResultSets=True;App=EntityFramework;" providerName="System.Data.SqlClient" />

Nota: Em connectionString Não inclua:
| x | Informações sobre metadados: "metadata = res: // * /"
| x | Citações codificadas: "" "

Sujay UN
fonte
0

Meu problema não era que a cadeia de conexão que eu estava fornecendo estava errada ou que a cadeia de conexão no app.config que eu pensava estar usando estava errada, mas que estava usando o app.config errado.

Jeff Dege
fonte
0

Às vezes, o serviço do Sql Server não foi iniciado. Isso pode gerar o erro. Vá para Serviços e inicie o Sql Server. Isso deve fazer funcionar. insira a descrição da imagem aqui

Claudinei Ferreira
fonte
Se o Sql Server Express não for iniciado, você obterá a exceção da instância do servidor e não aquela que o OP descreveu em sua pergunta.
noobprogrammer
0

Para a outra alma infeliz que está gerenciando um aplicativo de formulários da web herdado que usa um sqldatasource embutido, junto com as seqüências de conexão armazenadas em web.config, você pode receber esse erro se acessar sua cadeia de conexão como <% APSDataConnectionString%> em vez de < % $ ConnectionStrings: MyConnectionString%>. Isso aconteceu conosco ao atualizar o .NET de 3.5 para 4.x.

<asp:DropDownList ID="ddl" runat="server" DataSourceID="SqlDataSource1"
  DataTextField="value" DataValueField="id"></asp:DropDownList>                
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
  ConnectionString="<%$ ConnectionStrings:MyConnectionString %>"
  SelectCommand="select id, value from a_table">
</asp:SqlDataSource>
Michael
fonte
0

No meu caso, o problema era que, no servidor, um arquivo appsettings.json diferente foi usado pelo aplicativo.

AGuyCalledGerald
fonte
0

No meu caso, recebi um erro semelhante:

Uma exceção não tratada foi lançada pelo aplicativo. System.ArgumentException: o formato da seqüência de inicialização não está em conformidade com a especificação iniciada no índice 91.

Eu mudo minha cadeia de conexão de:

Servidor = .; Banco de dados = dbname; ID do usuário = myuserid; Senha = mypassword "

para:

Servidor = .; Banco de dados = nome do banco de dados; ID do usuário = myuserid; Senha = 'mypassword' "

e funciona, eu adicionei aspas simples à senha.

YuKeung
fonte
0

Eu também tive esse erro e consegui resolvê-lo da seguinte forma: escrevi anteriormente a conexão para o appsettings.json em uma seção que eu criei (ConnectionsStrings (observe os "s" extras)) e tentei conectar-me ao meu banco de dados, o que causou o erro Era um aplicativo ASP.NET CORE e, por isso, quis me conectar a ele com o método .GetConnectionString (detalhes sobre isso aqui ). Parece que esse método procura implicitamente por uma cadeia de conexão na seção "ConnectionStrings", que não Quando eu o alterei / corrigi para "ConnectionStrings", ele funcionou conforme o esperado.

sem noção
fonte
0

Como eu sei, sempre que você tiver mais de uma cadeia de conexão em sua solução (seu projeto atual, projeto de inicialização, ...), poderá enfrentar esse erro

esse link pode ajudar você a clicar

aseman arabsorkhi
fonte