2017-02-15 3 views
1

Je suis en train de lire à partir d'une base de données SQL Server qui est hébergé sur MS Azure, par le biais d'un site Web ASP.NET WebForms créé dans Visual Studio 2013.'MultipleActiveResultsSets de Mot-clé non pris en charge

J'ai stockaient le chaîne de connexion dans Web.Config, et l'ai référencé dans mon code-behind.

Toutefois, lorsque j'essaie d'exécuter Default.aspx localement, l'erreur this s'affiche.

Voici mon web.config:

<connectionStrings> 
    <add name="FYPConnectionString1" 
    connectionString="Data Source=damo.database.windows.net‌​;Initial Catalog=Ballinora_db;   
    Persist Security Info=True; User ID={Username};Password={Password};" /> 
    </connectionStrings> 

J'ai enlevé « MultipleActiveResultsSets = False » de la chaîne de connexion pour voir si l'erreur est arrêté, mais au contraire, l'erreur affiche maintenant « Crypter ». Ainsi, l'erreur apparaît pour l'élément suivant après la partie Mot de passe de la chaîne de connexion. Le mot de passe aurait-il un lien avec le problème?

De même, ce nom d'utilisateur et ce mot de passe sont-ils requis? S'agit-il des informations de connexion à Admin Serveur qui apparaissent dans le portail Azure?

Voici le code-behind aussi:

private void bindRepeater() 
{ 
    string constr = ConfigurationManager.ConnectionStrings["FYPConnectionString1"].ConnectionString; 
    //-- assuming Azure connection string stored in ConnectionString config in Web.Config as YourConnString 
    using (SqlConnection con = new SqlConnection(constr)) 
    { 
     using (SqlCommand cmd = new SqlCommand("SELECT Name FROM Users", con)) 
     { 
      cmd.CommandType = CommandType.Text; 
      con.Open(); 
      SqlDataAdapter sda = new SqlDataAdapter(cmd); 
      DataTable dt = new DataTable(); 
      sda.Fill(dt); 
      repTest.DataSource = dt; 
      repTest.DataBind(); 
      con.Close(); 
     } 
    } 
} 

protected void btnDisplay_Click(object sender, EventArgs e) 
{ 
    this.bindRepeater(); 
} 
+0

Bonjour, j'utilise également Azure Cloud Server avec base de données SQL. J'ai mis à jour ma réponse. Et s'il vous plaît se référer à la «Related» dans le droit de ce poste de question. Il y a des cas similaires avec vous. Voici également les liens. 1) http://stackoverflow.com/questions/1404268/keyword-not-supported-data-source?rq=1 2) http://stackoverflow.com/questions/9236554/keyword-not-supported-name?rq = 1 –

+0

3) http://stackoverflow.com/questions/41647501/connectionstring-keyword-not-supported?rq=1 4) http://stackoverflow.com/questions/33599853/the-connection-does-not- support-multipleactiveresultsets-malgré-être-en-connec? rq = 1 5) http://stackoverflow.com/questions/41483766/databinding-keyword-not-supported-metadata?rq=1 –

Répondre

0

La valeur par défaut de MultipleActiveRe sultSets est faux.

Et si vous n'avez pas besoin de la fonction, il suffit de sortir (supprimer) 'MultipleActiveRe sultSets = False' de la chaîne de connexion.

Parce que la valeur par défaut est false. Si vous voulez faux, vous n'avez pas besoin de l'écrire par intention.

Nous avons besoin de la fonction de MultipleActiveRe sultSets que nous ouvrons la deuxième connexion SQL à l'intérieur tandis que la boucle de SqlDataReader de la première connexion SQL.

Cependant, pourquoi 'MultipleActiveRe sultSets = False' est reconnu comme étant une mauvaise syntaxe.

Update-

C'est pourquoi je curieux de savoir pourquoi il avait tort. Je pense que la syntaxe pour MultipleActiveRe sultSets et Encrypt n'a pas de problème.

Voici mon connectionString dans web.config:

<connectionStrings> 
    <add name="GreenLeaf" connectionString="Server=tcp:greentree.database.secure.windows.net,1433;Database=greentea;User [email protected];Password=abc123;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;MultipleActiveResultSets=True;"/> 
</connectionStrings> 

Les différences avec les vôtres sont,

1) tcp 2) sécurisé 3) @greentree (ServerName Greentree avec ID comme (greenusers @ greentree) 4) sans fournisseur

'secure' est une nouvelle fonctionnalité qu'Azure fournit automatiquement une connexion sécurisée et que vous pouvez trouver à ce sujet sur Internet.

Vérifiez le pare-feu du serveur et essayez simplement de donner un tir avec les points ci-dessus.

Utilisation de l'ID admin est correct, mais dans l'aspect de la sécurité, vous devez créer et connexion supplémentaire utilisateur pour les utilisateurs externes avec des rôles limités et les autorisations.

Pouvez-vous vous connecter à Azure Server (base de données) via Azure Portal? Visual Studio? Server Management Studio? Lorsque vous entrez dans Server Management Studio, dans la fenêtre contextuelle pour la connexion, , il y a 'Nom du serveur'. Entrez 'greentree.database.windows.net' ici et essayez de vous connecter avec vos informations d'identification d'administrateur.

Ou pouvez-vous connecter à Azure Server sans connectionString dans web.config, mais dans le code simple?

Et si possible, s'il vous plaît mettre à jour avec le screencapture d'exception, pas le texte seulement.

Et pour la fin, je suis sûr que vous savez très bien, on a besoin de chiffrer le connectionString plus tard pour la sécurité.

+0

Salut @Kay Lee, j'ai enlevé 'MultipleActiveResultSets = False' de la chaîne de connexion, mais la même erreur apparaît toujours. Cependant, cette fois c'est pour _Encrypt_. Donc, pour une raison quelconque, cette erreur se produit après le mot de passe dans la chaîne de connexion. Cela donne-t-il des informations supplémentaires? – user7554035

+0

Salut, je vais maintenant mettre à jour ma chaîne de connexion pour ressembler à la vôtre ci-dessus pour voir si cela fonctionne. Je peux me connecter à ma base de données dans SQL Server Management Studio avec une connexion SQL Server Authentification. Mais quand je mets ces mêmes informations de connexion dans ma chaîne de connexion, j'obtiens cette erreur – user7554035

+0

Ok, utilisez la connectionString qui est générée automatiquement par Visual Stuio ou Server Management Studio. Et jetez un oeil à des cas similaires. –

0

Vous avez mal saisi "MultipleActiveResultsSets". Le "résultat" n'est pas pluriel. Correct way: "MultipleActiveResultSets".