Il formato della stringa di inizializzazione non è conforme alle specifiche a partire dall'indice 0


142

Ho un'applicazione ASP.Net che funziona perfettamente sulla mia macchina di sviluppo locale.

Quando eseguo questa applicazione online, mostra il seguente errore

Il formato della stringa di inizializzazione non è conforme alle specifiche a partire dall'indice 0


1
Probabilmente si effettua una chiamata / connessione sql errata. Se vai su Google blogs.msdn.com/b/jongallant/archive/2009/05/02/…
Aristos,

1
La risposta più votata su stackoverflow.com/questions/9040266/… sembra essere più accurata di quella più votata qui: sebbene la stringa di connessione utilizzata nello sviluppo possa funzionare, la pubblicazione deve fornire una stringa di connessione diversa appropriata per la produzione, e questo può fallire. Ad esempio, la persona che ha posto la domanda ha riscontrato che la connessione è "$ (ReplacableToken_mcn-Web.config Connection String_0)", che indica che la sostituzione che avrebbe dovuto avvenire come parte della pubblicazione non è avvenuta.
divega

Risposte:


183

Controlla la stringa di connessione. Se hai bisogno di aiuto, controlla le stringhe di connessione , che ha un elenco di quelle comunemente usate.

Stringhe di connessione comunemente utilizzate:

SQL Server 2012

Sicurezza standard

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

Connessione affidabile

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

Connessione a un'istanza di SQL Server

La sintassi del nome server / istanza utilizzata nell'opzione server è la stessa per tutte le stringhe di connessione di SQL Server.

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

SQL Server 2005

Sicurezza standard

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

Connessione affidabile

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

Connessione a un'istanza di SQL Server

La sintassi del nome server / istanza utilizzata nell'opzione server è la stessa per tutte le stringhe di connessione di SQL Server.

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

MySQL

Standard

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

Specifica della porta TCP

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

Oracolo

Utilizzando TNS

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

Utilizzo della sicurezza integrata

Data Source=TORCL;Integrated Security=SSPI;

Utilizzo di ODP.NET senza 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;

9
Il mio problema non è correlato a ConnectionString errato. Sono in grado di connettermi dalla mia macchina sviluppatore al db di produzione e usarlo. Quando distribuisco le stesse impostazioni, visualizzo questo errore. Hai idea di cosa potrebbe andare storto? Grazie
Denis Besic,

3
Potrebbero esserci molte cose su Denis. Innanzitutto, il tuo server e la tua macchina di sviluppo sono nella stessa rete? Che tipo di accesso stai usando? Stai usando qualche tipo di proxy, sei protetto da un firewall nel server prod? Stai entrando in qualche VPN?
Hanlet Escaño,

2
Non sono sicuro di chi sia il responsabile, è Visual Studio, strumento per la distribuzione Web o hosting smarterasp.net. Quando l'applicazione è stata distribuita, qualcosa ha cambiato la mia connessione. Ho effettuato l'accesso direttamente a web.config e l'ho aggiornato manualmente e funziona. Grazie per il tuo tempo con +1;)
Denis Besic,

Non funziona, ho provato a mettere la stringa di connessione corretta.

Qualcuno può vedere questa domanda? stackoverflow.com/questions/46167682/...

18

Questo potrebbe aiutare qualcuno .. La mia password conteneva un punto e virgola, quindi ho riscontrato questo problema, quindi ho aggiunto la password tra virgolette. È stato davvero un errore sciocco.

Ho cambiato il seguente:

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

per

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

Sì, questo era il mio problema con la mia password aveva un; così aggiungendo il '' risolto
Claudio

12

Imposta il progetto contenente il tuo DbContext classe come progetto di avvio.

Stavo ricevendo questo errore durante la chiamata enable-migrations. Anche se in Package Manager ConsoleI selezionato il giusto Default project, stava ancora guardando il file web.config di quel progetto di avvio, in cui la stringa di connessione non era presente.


4
+1. Penso che il progetto iniziale dovrebbe essere il progetto che contiene la stringa di connessione. Questo era il mio problema Grazie per il tuo suggerimento sul progetto Startup.
Causa il

4

Assicurarsi che la stringa di connessione sia in questo formato:

server = FOOSERVER; database = BLAH_DB; pool = false; Timeout connessione = 60; Sicurezza integrata = SSPI;

Se nella stringa manca il servertag, il metodo tornerà indietro con questo errore.


4

Ho avuto lo stesso problema. A livello locale il sito funzionava bene, ma su azzurro avrebbe fallito con il messaggio sopra.

si scopre che il problema era impostare la stringa di connessione nel ctor, in questo modo:

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

NON funziona, questo farà:

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

Mi batte ..


Questa è una soluzione così strana ma mi ha anche salvato la vita. Per la cronaca, "db" è il nome della chiave della stringa di connessione nel file di configurazione (il mio non era "db")
mike

Risolto il problema anche per me. Avevo una stringa di connessione valida, ma impostandola manualmente veniva generato il "Formato della stringa di inizializzazione non conforme alle specifiche a partire dall'indice 0".
Sardaukar,

4

Controlla la stringa di connessione come ho dimenticato di aggiungere services.AddDbContext<dbsContext>(options => options.UseSqlServer("Default"));

Causa l'errore e qui quando aggiungo Configuration.GetConnectionString , risolve il problema

come ora la connessione è:

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

funziona bene (questo problema è risolto per il core .net)


3

Facendo riferimento al percorso completo sp ho risolto questo problema per me:

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


2

Ho avuto lo stesso errore. Nel mio caso, ciò era dovuto al fatto che mancava un preventivo di chiusura per la password nella stringa di connessione.

Modificato da questo

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

Per

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

Scrivi un codice di esempio o qualcos'altro per rendere perfetta la tua risposta. Una riga non spiega tutto
Manish Kumawat,

Sicuro. Modificato la mia risposta sopra.
Amer Bashoeb,

1

Ciò accade anche quando si copia una pagina Web da una soluzione a un'altra, quindi si esegue la soluzione e si scopre che ha un nome di stringa di connessione diverso nel webconfig. Quindi si modifica incautamente il nome della stringa di connessione nel pannello delle proprietà nella vista di progettazione della pagina.

Meglio semplicemente cambiarlo nella parte di codice anziché nel design.


1

Il mio problema era che avevo aggiunto il codice di registrazione del database al mio costruttore per un oggetto DB, e questo sembrava causare il caos sul mio profilo di distribuzione azzurro.

Cordiali saluti - Ho semplificato questo esempio, nel codice reale questo è stato disattivato in produzione (ma ancora nel codice)

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

1

Ho avuto un refuso nelle stringhe di connessione "Database == PESitecore1_master"

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

1

Ho avuto lo stesso problema e finalmente sono riuscito a risolverlo nel modo seguente:

Il problema era nella definizione della stringa di connessione nel mio web.config.

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

Quanto sopra ha funzionato perfettamente localmente perché ho usato un database locale quando gestivo utenti e ruoli. Quando ho trasferito la mia applicazione su IIS, il DB locale non era più accessibile, inoltre vorrei utilizzare il mio DB in SQL Server. Quindi cambio la stringa di connessione sopra il seguente equivalente di SQL Server DB:

<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"/>

NOTA: Quanto sopra, inoltre, supponiamo che userete lo stesso SQL Server dalla vostra casella locale (nel caso in cui lo incorporiate nel vostro web.config locale - questo è esattamente quello che ho fatto nel mio caso).


1

Ho avuto lo stesso problema, ho scoperto che la distribuzione in IIS non ha impostato correttamente le stringhe di connessione. erano "$ (ReplacableToken_devConnection-Web.config Connection String_0)" durante la visualizzazione delle stringhe di connessione del sito in IIS, anziché la stringa di connessione effettiva. Li ho aggiornati lì e tutto ha funzionato come previsto


puoi approfondirlo di più
TechnicalKeera,

Anch'io ho lo stesso problema e soffro di 3 settimane stackoverflow.com/questions/48929891/…
TechnicalKeera

1

Ho copiato e incollato la mia configurazione della stringa di connessione nel mio progetto di test e ho iniziato a riscontrare questo errore. La stringa di connessione ha funzionato bene nel mio progetto WebAPI. Ecco la mia soluzione.

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

1

Ho rimosso e quot alla fine della stringa di connessione e ha funzionato

Invece di

App=EntityFramework&quot;

Usato

App=EntityFramework;

Impostare DefaultConnection come di seguito

<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: In connectionString Non includere:
| x | Informazioni sui metadati: "metadata = res: // * /"
| x | Citazioni codificate: "" "


0

Il mio problema non era che la stringa di connessione che stavo fornendo fosse sbagliata, o che la stringa di connessione in app.config che pensavo di usare fosse sbagliata, ma che stavo usando app.config sbagliata.


0

A volte il servizio SQL Server non è stato avviato. Questo potrebbe generare l'errore. Vai a Servizi e avvia SQL Server. Questo dovrebbe farlo funzionare. inserisci qui la descrizione dell'immagine


Se Sql Server Express non viene avviato, si ottiene un'eccezione dell'istanza del server non quella descritta dall'OP nella sua domanda.
noobprogrammer

0

Per l'altra anima sfortunata che gestisce un'applicazione legacy di moduli web che utilizza una sqldatasource inline, insieme alle stringhe di connessione archiviate in web.config, è possibile che venga visualizzato questo errore se si accede alla stringa di connessione come <% APSDataConnectionString%> anziché < % $ ConnectionStrings: MyConnectionString%>. Questo è successo a noi durante l'aggiornamento di .NET da 3.5 a 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>

0

Nel mio caso il problema era che sul server veniva utilizzato un diverso file appsettings.json dall'applicazione.


0

Nel mio caso, ho riscontrato un errore simile:

Un'eccezione non gestita è stata generata dall'applicazione. System.ArgumentException: il formato della stringa di inizializzazione non è conforme alle specifiche a partire dall'indice 91.

Cambio la mia stringa di connessione da:

Server = .; Database = dbname; ID utente = myuserid; Password = mypassword "

per:

Server = .; Database = dbname; ID utente = myuserid; Password = 'mypassword' "

e funziona, ho aggiunto virgolette alla password.


0

Ho avuto anche questo errore e sono stato in grado di risolverlo come segue: in precedenza ho scritto il stringing di connessione in appsettings.json in una sezione che ho creato (ConnectionsStrings (notare le "s" extra) e ho provato a connettermi al mio database che ha causato il Era un'applicazione ASP.NET CORE e quindi volevo collegarmi ad essa con il metodo .GetConnectionString (dettagli su quello qui ). Sembra che questo metodo cerchi implicitamente una connessione nella sezione "ConnectionStrings", che non ha non esiste. Quando l'ho modificato / corretto in "ConnectionStrings" ha funzionato come previsto.


0

Come so, ogni volta che hai più di 1 stringa di connessione nella tua soluzione (il tuo progetto attuale, progetto di avvio, ...), potresti riscontrare questo errore

questo link può aiutarti a fare clic

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.