web-dev-qa-db-fra.com

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

J'ai téléchargé mon site sur GoDaddy Host partagé. Je peut accéder cette base de données à partir de mon studio de gestion. Je ne peut pas accéder cette base de données à partir de mon site. Je reçois l'erreur suivante:

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

Ma chaîne de connexion est dans web.config et ressemble à ceci:

<connectionStrings>
    <add name="mcn" connectionString="Data Source=mydatabase.db.8706856.hostedresource.com; Initial Catalog=mydatabase; User ID=username; Password=xyz;" providerName="System.Data.SqlClient" />    
</connectionStrings>

Quelle est la cause de cette erreur? J'ai aussi essayé d'écrire ...Data Source=(local);...

13
1110

Cela peut aider de voir quelle est la chaîne de connexion réelle. Ajouter à Global.asax:

throw new Exception(ConfigurationManager.ConnectionStrings["mcn"].ConnectionString);

Si la chaîne de connexion réelle est $(ReplacableToken_mcn-Web.config Connection String_0), cela expliquerait le problème.

17
Michael Liu

Je faisais face au même problème et j'ai découvert que ma chaîne de connexion avait un caractère double guillemet supplémentaire au milieu de la chaîne de connexion.

5
dotNET

À l'origine, j'appelais la valeur de la chaîne de connexion comme indiqué ci-dessous (VB.NET) et le message d'erreur était mentionné. 

 Using connection As New SqlConnection("connectionStringName") 
  '// more code would go here...
 End Using

l'ajout d'une référence à System.Configuration et la mise à jour de mon code comme indiqué ci-dessous étaient ma solution. La chaîne de connexion n'était pas le problème puisque d'autres contrôles l'utilisaient sans aucun problème (SqlDataSource)

Using connection As New SqlConnection(ConfigurationManager.ConnectionStrings("connectionStringName").ConnectionString)
    '// more code would go here...
End Using
3
Geovani Martinez

J'avais ceci dans VS2015 et ma solution était de changer la première ligne de ma WebConfig de

<?xml version="1.0" encoding="utf-8"?>

à

<?xml version="1.0"?>

Curieuse.

2
sobelito

J'avais le même problème lors de l'accès à une API Web ASP.NET publiée. Dans mon cas, j'ai réalisé que lorsque j'étais sur le point de publier l'API Web, je n'avais pas indiqué de chaîne de connexion dans la section Bases de données:

 After using the three dot button, the connection string will be displayed on the text field to the left

Donc, je l'ai généré en utilisant le bouton à trois points, et après la publication, cela a fonctionné.

Ce qui est étrange, c’est que pendant longtemps, je suis presque sûr qu’il n’y avait pas de chaîne de connexion dans cette configuration, mais cela fonctionnait toujours. 

2
ndarriulat

Un autre piège est que connectionString fait parfois référence au nom de la chaîne de connexion dans app/web-config et parfois à la chaîne de connexion elle-même et inversement.

Très facile à réparer mais parfois difficile à repérer.

1
Jonas Stensved

Pour mon cas, le coupable était le point-virgule et les guillemets dans le mot de passe de la base de données prod. Notre équipe informatique utilise un outil pour générer des mots de passe. Elle en a donc généré un avec le point-virgule et les guillemets Connectionstring ressemble à

<add key="BusDatabaseConnectionString" value="Data Source=myserver;Initial Catalog=testdb;User Id=Listener;Password=BlaBla"';[]qrk/>

Le mot de passe a changé et cela a fonctionné.

1
Manish

Pour tous ceux qui risquent de trébucher sur ce fil en essayant de corriger cette même erreur qui résulte de l'exécution de Enable-Migrations, il est probable qu'aucune des solutions ci-dessus ne vous aidera (j'ai tout essayé).

J'ai rencontré le même problème dans Web API 2 après avoir exécuté ceci dans la console PM:

Enable-Migrations -EnableAutomaticMigrations -ConnectionString IdentityConnection -ConnectionProviderName System.Data.SqlClient -Force

Je l'ai corrigé en le changeant pour qu'il utilise réellement la ApplicationDbContext créée dans IdentityModels.

Enable-Migrations -ContextTypeName ApplicationDbContext -EnableAutomaticMigrations -Force

La chose intéressante est non seulement que cette référence corresponde exactement à la même chaîne de connexion, mais le constructeur inclut un code qui, selon 4castle, était un correctif potentiel (c'est-à-dire la suggestion throwIfV1Schema: false.

Notez que le paramètre -Force est uniquement utilisé car le fichier Configuration.cs existe déjà.

0
Dave Conley

Mon problème était que mon fichier web.config conservait une référence à une connexion de modèle d'entité supprimée. Vérifiez donc qu'il n'y a pas de chaînes de connexion périmées. 

0
kravits88

Je recevais cette exception, corrigée en ajoutant throwIfV1Schema: false à mon constructeur DbContext:

public class AppDb : IdentityDbContext<User>
{
    public AppDb()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }
}
0
4castle

Si vous utilisez EF et les profils de publication, vous pouvez avoir une entrée de chaîne de connexion vierge dans votre profil de publication. Ennuyeux mais tout à fait possible.

0
Mike Devenney

Aucune des solutions listées dans ce fil n'a fonctionné pour moi. J'ai commencé à avoir cette erreur après avoir apporté quelques modifications à la section des chaînes de connexion du fichier web.config. (Mon application se connecte à plusieurs bases de données.) J'ai soigneusement examiné les modifications que j'avais apportées et je me suis rendu compte que j'avais retiré l'étiquette en haut de ma liste. J'ai restauré le tag en haut de ma liste de chaînes de connexion et le problème a disparu immédiatement. Ce site qui recevait l'erreur est une application qui réside sous le site principal ( https://www.domain.org/MySite ). Cela ne résoudra peut-être pas le problème pour tout le monde, mais cela le réglera pour moi. 

0
George McKee

Mon problème était une simple citation non désirée .. La vérification de la chaîne de connexion à partir de l'emplacement de l'index mentionné dans la chaîne d'erreur m'a aidé à détecter le problème. 

0
Kirsten Greed

J'ai eu le même message d'erreur dans mon développement localhost avec Visual Studio. Notez que tout fonctionnait lors de la publication avec Microsoft Release Management (MRM). J'ai corrigé ma situation en modifiant la valeur initiale qui était une référence MRM.

La valeur initiale de My App.config était la suivante:

  <connectionStrings>
    <add name="BDORA" connectionString="__token3__" />
  </connectionStrings>

Au niveau local, l'exécution de l'application n'a pas pu interpréter la référence token3 à sa valeur réelle dans Tokens.xml. Pour que cela fonctionne sur mon hôte local, je devais forcer la valeur de token3 dans Tokens.xml dans le fichier App.config.

0
Michael Fayad

J'ai perdu 1,5 jours de travail à cause de cette erreur et un collègue a finalement résolu le problème en remplaçant l'identifiant utilisateur par l'identifiant d'utilisateur et le mot de passe par le mot clé. La chaîne de connexion mise à jour pour .Net était l'erreur pour moi

0
Maham Khan

J'ai eu l'erreur ci-dessous en essayant de lancer l'application:

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

Et au cours de mes recherches, j'ai trouvé cette pile et j'ai pu corriger cette erreur en consultant le fichier de configuration Web et constaté qu'il y avait une chaîne supplémentaire dans le mot de passe. Une fois que j'ai retiré la chaîne, j'ai pu accéder au site Web sans erreur.

0
user3320382