185 votes

Le format de la chaîne d'initialisation n'est pas conforme à la spécification commençant à l'index 0

J'ai une application ASP.NET qui fonctionne bien sur ma machine de développement locale.

Lorsque j'exécute cette application en ligne, elle affiche l'erreur suivante :

Le format de la chaîne d'initialisation n'est pas conforme à la spécification commençant à l'index 0

Pourquoi cela apparaît-il, et comment puis-je le réparer ?

2 votes

Vous avez probablement fait un mauvais appel/connexion sql. Si vous le googlez blogs.msdn.com/b/jongallant/archive/2009/05/02/

1 votes

La réponse la plus votée à stackoverflow.com/questions/9040266/ semble être plus précis que celui qui a été le plus voté ici : bien que la chaîne de connexion que vous utilisez dans le développement puisse fonctionner, la publication doit fournir une chaîne de connexion différente appropriée à la production, et cela peut échouer. Par exemple, la personne qui a posé cette question a trouvé que la connexion était "$(ReplacableToken_mcn-Web.config Connection String_0)", ce qui indique que le remplacement qui aurait dû se produire dans le cadre de la publication n'a pas eu lieu.

231voto

Hanlet Escaño Points 9244

Vérifiez votre chaîne de connexion. Si vous avez besoin d'aide, consultez Cordons de liaison qui contient une liste de ceux qui sont couramment utilisés.

Chaînes de connexion couramment utilisées :

SQL Server 2012

Sécurité standard

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

Connexion de confiance

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

Connexion à une instance de SQL Server

La syntaxe du nom de serveur/instance utilisée dans l'option de serveur est la même pour toutes les chaînes de connexion du serveur SQL.

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

SQL Server 2005

Sécurité standard

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

Connexion de confiance

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

Connexion à une instance de SQL Server

La syntaxe du nom de serveur/instance utilisée dans l'option de serveur est la même pour toutes les chaînes de connexion du serveur SQL.

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

MySQL

Standard

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

Spécifier le port TCP

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

Oracle

Utilisation des TNS

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

Utilisation de la sécurité intégrée

Data Source=TORCL;Integrated Security=SSPI;

Utiliser ODP.NET sans 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;

37voto

Abdul Rehman Sayed Points 4123

Ceci pourrait aider quelqu'un Mon mot de passe contenait un point-virgule, j'ai donc été confronté à ce problème et j'ai ajouté le mot de passe entre guillemets. C'était vraiment une erreur stupide.

J'ai modifié les éléments suivants :

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

a

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

0 votes

Oui, c'était mon problème, mon mot de passe avait un ;, donc ajouter le '' l'a résolu.

0 votes

Sauveur de vies ! J'étais en train de devenir fou en essayant de comprendre ce qui n'allait pas avec la nouvelle solution Azure que j'essayais de mettre en place et je n'avais même pas remarqué que le mot de passe que j'avais généré automatiquement en utilisant un gestionnaire de mot de passe choisissait un point-virgule comme l'un des caractères. Je voterais 10 fois pour cet article si je le pouvais. Merci ! :)

12voto

Mart Points 2583

Définissez le projet contenant votre DbContext comme projet de démarrage.

J'ai eu cette erreur en appelant enable-migrations . Même si dans le Package Manager Console J'ai sélectionné le bon Default project il regardait toujours le fichier web.config de ce projet de démarrage, où la chaîne de connexion n'était pas présente.

4 votes

+1. Je pense que le projet de départ devrait être le projet qui contient la chaîne de connexion. C'était mon problème. Merci pour votre suggestion de projet de départ.

8voto

user8099291 Points 219

Vérifiez votre chaîne de connexion comme j'ai oublié d'ajouter services.AddDbContext<dbsContext>(options => options.UseSqlServer("Default"));

Cela provoque l'erreur et ici quand j'ajoute Configuration.GetConnectionString alors cela résout le problème

comme maintenant la connexion est :

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

fonctionne bien (Ce problème est résolu pour .net core)

4voto

Flores Points 1184

J'ai eu le même problème. Localement, le site fonctionnait bien, mais sur Azure, il échouait avec le message ci-dessus.

Il s'avère que le problème était de définir la chaîne de connexion dans le ctor, comme ceci :

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

Ça ne marche pas, ça oui :

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

Je ne sais pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X