Das Format der Initialisierungszeichenfolge entspricht nicht der Spezifikation ab Index 0

142

Ich habe eine ASP.Net-Anwendung, die auf meinem lokalen Entwicklungscomputer einwandfrei ausgeführt wird.

Wenn ich diese Anwendung online ausführe, wird der folgende Fehler angezeigt

Das Format der Initialisierungszeichenfolge entspricht nicht der Spezifikation ab Index 0

GS Bhangal
quelle
1
Sie machen wahrscheinlich einen schlechten SQL-Anruf / eine schlechte SQL-Verbindung. Wenn Sie es googeln blogs.msdn.com/b/jongallant/archive/2009/05/02/…
Aristos
1
Die am häufigsten gewählte Antwort unter stackoverflow.com/questions/9040266/… scheint genauer zu sein als die am meisten gewählte hier: Obwohl die in der Entwicklung verwendete Verbindungszeichenfolge möglicherweise funktioniert, muss beim Veröffentlichen eine andere für die Produktion geeignete Verbindungszeichenfolge bereitgestellt werden Dies kann fehlschlagen. Beispielsweise stellte die Person, die diese Frage gestellt hat, fest, dass die Verbindung "$ (ReplacableToken_mcn-Web.config Connection String_0)" lautet, was darauf hinweist, dass die Ersetzung, die im Rahmen der Veröffentlichung hätte erfolgen sollen, nicht erfolgt ist.
Divega

Antworten:

183

Überprüfen Sie Ihre Verbindungszeichenfolge. Wenn Sie Hilfe benötigen, überprüfen Sie die Verbindungszeichenfolgen , die eine Liste häufig verwendeter Zeichenfolgen enthalten .

Häufig verwendete Verbindungszeichenfolgen:

SQL Server 2012

Standardsicherheit

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

Vertrauenswürdige Verbindung

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

Verbindung zu einer SQL Server-Instanz

Die in der Serveroption verwendete Server- / Instanznamensyntax ist für alle SQL Server-Verbindungszeichenfolgen gleich.

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

SQL Server 2005

Standardsicherheit

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

Vertrauenswürdige Verbindung

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

Verbindung zu einer SQL Server-Instanz

Die in der Serveroption verwendete Server- / Instanznamensyntax ist für alle SQL Server-Verbindungszeichenfolgen gleich.

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

MySQL

Standard

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

Angabe des TCP-Ports

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

Orakel

TNS verwenden

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

Integrierte Sicherheit nutzen

Data Source=TORCL;Integrated Security=SSPI;

Verwenden von ODP.NET ohne 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
quelle
9
Mein Problem hängt nicht mit falschem ConnectionString zusammen. Ich kann eine Verbindung von meinem Entwicklercomputer zur Produktionsdatenbank herstellen und diese verwenden. Wenn ich dieselben Einstellungen bereitstelle, wird dieser Fehler angezeigt. Haben Sie eine Idee, was schief gehen könnte? Vielen Dank
Denis Besic
3
Es könnte viele Dinge auf Denis geben. Befinden sich Ihr Server und Ihr Entwicklungscomputer im selben Netzwerk? Welche Art von Login verwenden Sie? Verwenden Sie irgendeine Art von Proxy, befinden Sie sich hinter einer Firewall im Produktserver? Steigen Sie in ein VPN ein?
Hanlet Escaño
2
Ich bin nicht sicher, wer dafür verantwortlich ist, ob es sich um Visual Studio, ein Tool für die Webbereitstellung oder das Hosting von smarterasp.net handelt. Als die Anwendung bereitgestellt wurde, hat sich meine Verbindungszeichenfolge geändert. Ich habe direkt auf web.config zugegriffen und es manuell aktualisiert und es funktioniert. Vielen Dank für Ihre Zeit mit +1;)
Denis Besic
Es funktioniert nicht, ich habe versucht, die richtige Verbindungszeichenfolge zu setzen.
Kann jemand diese Frage sehen? stackoverflow.com/questions/46167682/…
18

Dies könnte jemandem helfen. Mein Passwort enthielt ein Semikolon und war daher mit diesem Problem konfrontiert. Daher wurde das Passwort in Anführungszeichen gesetzt. Es war wirklich ein dummer Fehler.

Ich habe folgendes geändert:

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

zu

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='pass;word'" providerName="System.Data.SqlClient" />
Abdul Rehman sagte
quelle
Ja das war mein Problem mit meinem Passwort hatte ein; Das Hinzufügen des '' löste es
Claudio
11

Legen Sie das Projekt mit Ihrer DbContextKlasse als Startprojekt fest.

Ich habe diesen Fehler beim Anrufen erhalten enable-migrations. Selbst wenn Package Manager Consoleich rechts ausgewählt habe Default project, wurde immer noch die Datei web.config des Startprojekts angezeigt, in der die Verbindungszeichenfolge nicht vorhanden war.

Mart
quelle
4
+1. Ich denke, das Startprojekt sollte das Projekt sein, das die Verbindungszeichenfolge enthält. Das war mein Problem. Vielen Dank für Ihren Vorschlag für ein Startup-Projekt.
Tchaps
4

Stellen Sie sicher, dass Ihre Verbindungszeichenfolge dieses Format hat:

server = FOOSERVER; database = BLAH_DB; pooling = false; Verbindungszeitlimit = 60; Integrierte Sicherheit = SSPI;

Wenn in Ihrer Zeichenfolge das serverTag fehlt, kehrt die Methode mit diesem Fehler zurück.

DBNoob
quelle
4

Ich hatte das gleiche Problem. Lokal lief die Site einwandfrei, aber unter Azure schlug sie mit der obigen Meldung fehl.

Es stellte sich heraus, dass das Problem darin bestand, den Verbindungsstring im CTOR wie folgt einzustellen:

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

Funktioniert NICHT, dies wird:

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

Schlägt mich..

Flores
quelle
Das ist so eine seltsame Lösung, hat aber auch mein Leben gerettet. Für die Aufzeichnung ist "db" der Name des Schlüssels Ihrer Verbindungszeichenfolge in der Konfigurationsdatei (meine war nicht "db")
Mike
Das Problem wurde auch für mich behoben. Ich hatte eine gültige Verbindungszeichenfolge, aber durch manuelles Einstellen wurde "Das Format der Initialisierungszeichenfolge entspricht nicht der Spezifikation ab Index 0" ausgegeben.
Sardaukar
4

Überprüfen Sie Ihre Verbindungszeichenfolge, wie ich vergessen habe, sie hinzuzufügen services.AddDbContext<dbsContext>(options => options.UseSqlServer("Default"));

Es verursacht den Fehler und hier, wenn ich hinzufüge Configuration.GetConnectionString , dann löst es das Problem

wie jetzt ist die Verbindung:

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

funktioniert gut (Dieses Problem ist für .net Core gelöst)

user8099291
quelle
3

Durch Verweisen auf den vollständigen SP-Pfad wurde dieses Problem für mich behoben:

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

Ich hatte den gleichen Fehler. In meinem Fall lag dies daran, dass mir ein abschließendes Anführungszeichen für das Kennwort in der Verbindungszeichenfolge fehlte.

Daraus geändert

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

Zu

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password'" providerName="System.Data.SqlClient" />
Amer Bashoeb
quelle
Bitte schreiben Sie einen Beispielcode oder etwas anderes, um Ihre Antwort perfekt zu machen. Eine Zeile erklärt nicht alles
Manish Kumawat
Sicher. Ich habe meine Antwort oben bearbeitet.
Amer Bashoeb
1

Dies passiert auch, wenn Sie eine Webseite von einer Lösung in eine andere kopieren, dann Ihre Lösung ausführen und feststellen, dass sie in der Webkonfiguration einen anderen Namen für die Verbindungszeichenfolge hat. Anschließend ändern Sie unachtsam den Namen der Verbindungszeichenfolge im Eigenschaftenfenster in der Entwurfsansicht der Seite.

Es ist besser, es einfach im Codeteil anstatt im Design zu ändern.

Gellie Ann
quelle
1

Mein Problem war, dass ich meinem Konstruktor Datenbankprotokollierungscode für ein DB-Objekt hinzugefügt habe, und dies schien mein Azure-Bereitstellungsprofil zu zerstören.

Zu Ihrer Information - Ich habe dieses Beispiel vereinfacht. Im realen Code wurde dies in der Produktion deaktiviert (aber immer noch im Code).

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

Ich hatte Tippfehler in meinen Verbindungszeichenfolgen "Database == PESitecore1_master"

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

Ich hatte das gleiche Problem und konnte es schließlich folgendermaßen lösen:

Das Problem lag in der Definition der Verbindungszeichenfolge in meiner web.config.

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

Das Obige funktionierte lokal perfekt, da ich beim Verwalten von Benutzern und Rollen eine lokale Datenbank verwendet habe. Als ich meine Anwendung auf IIS übertragen habe, war der Zugriff auf die lokale Datenbank nicht mehr möglich. Außerdem möchte ich meine Datenbank in SQL Server verwenden. Daher ändere ich die obige Verbindungszeichenfolge in das folgende SQL Server DB-Äquivalent:

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

ANMERKUNG: Angenommen, Sie verwenden denselben SQL Server aus Ihrer lokalen Box (falls Sie ihn in Ihre lokale web.config integrieren - genau das habe ich in meinem Fall getan).

Andreas Venieris
quelle
1

Ich hatte das gleiche Problem und stellte fest, dass bei der Bereitstellung auf IIS die Verbindungszeichenfolgen nicht richtig festgelegt wurden. Sie waren '$ (ReplacableToken_devConnection-Web.config Connection String_0)', wenn die Verbindungszeichenfolgen der Site in IIS anstelle der tatsächlichen Verbindungszeichenfolge angezeigt wurden. Ich habe sie dort aktualisiert und alle haben wie erwartet funktioniert

Jason
quelle
Können Sie es bitte näher erläutern
TechnicalKeera
Ich habe auch das gleiche Problem und leide unter 3 Wochen stackoverflow.com/questions/48929891/…
TechnicalKeera
1

Ich habe meine Verbindungszeichenfolgenkonfiguration kopiert und in mein Testprojekt eingefügt und bin auf diesen Fehler gestoßen. Die Verbindungszeichenfolge hat in meinem WebAPI-Projekt einwandfrei funktioniert. Hier ist mein Fix.

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

Ich habe & quot am Ende der Verbindungszeichenfolge entfernt und es hat funktioniert

Anstatt

App=EntityFramework&quot;

Gebraucht

App=EntityFramework;

Stellen Sie DefaultConnection wie folgt ein

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

Hinweis: In connectionString Folgendes nicht einschließen:
| x | Metadateninfo: "metadata = res: // * /"
| x | Codierte Zitate: "" "

Sujay UN
quelle
0

Mein Problem war nicht, dass die von mir bereitgestellte Verbindungszeichenfolge falsch war oder dass die Verbindungszeichenfolge in der app.config, die ich verwendete, falsch war, sondern dass ich die falsche app.config verwendete.

Jeff Dege
quelle
0

Manchmal wurde der SQL Server-Dienst nicht gestartet. Dies kann den Fehler erzeugen. Gehen Sie zu Dienste und starten Sie SQL Server. Dies sollte funktionieren. Geben Sie hier die Bildbeschreibung ein

Claudinei Ferreira
quelle
Wenn SQL Server Express nicht gestartet wird, erhalten Sie eine Serverinstanzausnahme, die nicht die in seiner Frage beschriebene ist.
noobprogrammer
0

Für die eine andere unglückliche Seele, die eine ältere Webforms-Anwendung verwaltet, die eine Inline-sqldatasource zusammen mit in web.config gespeicherten Verbindungszeichenfolgen verwendet, kann dieser Fehler auftreten, wenn Sie auf Ihre Verbindungszeichenfolge wie <% APSDataConnectionString%> anstelle von <zugreifen % $ ConnectionStrings: MyConnectionString%>. Dies ist uns beim Upgrade von .NET von 3.5 auf 4.x passiert.

<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
quelle
0

In meinem Fall bestand das Problem darin, dass auf dem Server eine andere Datei appsettings.json von der Anwendung verwendet wurde.

AGuyCalledGerald
quelle
0

In meinem Fall habe ich einen ähnlichen Fehler erhalten:

Eine nicht behandelte Ausnahme wurde von der Anwendung ausgelöst. System.ArgumentException: Das Format der Initialisierungszeichenfolge entspricht nicht der Spezifikation ab Index 91.

Ich ändere meine Verbindungszeichenfolge von:

Server =.; Datenbank = Datenbankname; Benutzer-ID = myuserid; Passwort = mypassword "

zu:

Server =.; Datenbank = Datenbankname; Benutzer-ID = myuserid; Passwort = 'meinpasswort' "

und es funktioniert, ich habe dem Passwort einfache Anführungszeichen hinzugefügt.

YuKeung
quelle
0

Ich hatte auch diesen Fehler und konnte ihn wie folgt beheben: Ich habe zuvor den Verbindungsstring in die Datei appsettings.json in einen von mir erstellten Abschnitt geschrieben (ConnectionsStrings (beachten Sie die zusätzlichen "s") und versucht, eine Verbindung zu meiner Datenbank herzustellen, die das verursacht hat Fehler. Es war eine ASP.NET CORE-Anwendung und daher wollte ich eine Verbindung mit der .GetConnectionString-Methode herstellen (Details dazu hier ). Es scheint, dass diese Methode implizit nach einer Verbindungszeichenfolge im Abschnitt "ConnectionStrings" sucht, was nicht der Fall war existiert nicht. Als ich es in "ConnectionStrings" geändert / korrigiert habe, hat es wie erwartet funktioniert.

ahnungslos
quelle
0

Wie ich weiß, kann es vorkommen, dass Sie mit diesem Fehler konfrontiert werden, wenn Ihre Lösung mehr als eine Verbindungszeichenfolge enthält (Ihr aktuelles Projekt, Startprojekt, ...)

Dieser Link kann Ihnen beim Klicken helfen

aseman arabsorkhi
quelle