Mot-Clé Non Pris En Charge: Les Métadonnées
Cette ligne:
WebSecurity.InitializeDatabaseConnection(connectionStringName: "DefaultConnection", userTableName: "UserProfile", userIdColumn: "UserID", userNameColumn: "UserName", autoCreateTables: true);
Est à jeter:
'Système.ArgumentException' s'est produite dans System.Data.dll mais n'a pas été traitée dans le code utilisateur
Informations supplémentaires: le mot-Clé non pris en charge: "métadonnées".
Ma chaîne de connexion est:
add name="DefaultConnection" connectionString="metadata=res://*/TalyllynModel.csdl|res://*/TalyllynModel.ssdl|res://*/TalyllynModel.msl;provider=System.Data.SqlClient;provider connection string="data source=***********;initial catalog=********;persist security info=True;user id=*********;password=********;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.SqlClient" /></connectionStrings>
Vous ne savez pas où il est im ne va pas.
- avez-vous essayé de connecter manuellement? avez-vous vérifié les informations d'identification de cette façon?
Vous devez vous connecter pour publier un commentaire.
La chaîne que vous avez passé n'est pas une base de données valide chaîne de connexion, c'est un EF chaîne de connexion qui contient une chaîne de connexion SQL Server dans son
provider connection string
paramètre. WebSecurity.InitializeDatabaseConnection s'attend à une base de données valide chaîne de connexionPour éviter l'analyse de la chaîne de connexion, vous pouvez utiliser le EntityConnectionStringBuilder classe pour analyser la chaîne et de récupérer la base de données de la chaîne de connexion à partir de son ProviderConnectionString propriété
Lorsque cela s'est produit pour moi, c'était parce que la chaîne de connexion a:
mais il devrait être:
parce que comme l'a dit l'autre réponse, c'est un EF chaîne de connexion.
Juste pour ajouter une autre possibilité (que j'ai rencontrés) - qui peut être le cas si vous êtes en développement/maintien d'Azur, WebApp, à l'aide d'une chaîne de connexion enregistrées dans Azure Paramètres de l'Application.
À côté de chaque chaîne de connexion dans les Paramètres de l'Application est une liste déroulante pour la chaîne de connexion de type il est très facile d'oublier de la mettre à la "Coutume" pour l'Entité Cadre de valeurs et de laisser la valeur par défaut de SQL (Base de données) - ce qui provoque aussi l'erreur ci-dessus.
Je vais jeter une autre réponse, juste au cas où quelqu'un d'autre s'exécute en cela par le biais de la même bizarre scénario, comme je l'ai fait.
Pour commencer avec, comme d'autres l'ont dit, ADO chaînes de connexion et EF chaînes de connexion sont différents.
Une chaîne de connexion ADO contient un certain nombre de points-virgules, des champs séparés, ce qui peut très d'un type de connexion à l'autre, mais vous avez l'habitude de voir "data source=xxx", "initial catalog=yyy", etc. Vous pas voir "metadata=zzz".
Un EF chaîne de connexion a la même structure, mais il a un "metadata=zzz" et un "fournisseur de la chaîne de connexion=www", où "www" est un échappé de la chaîne de connexion ADO.
Donc un format normal pour une chaîne de connexion ADO est:
Tout en un format normal pour un EF chaîne de connexion est:
La plupart des gens qui sont en cours d'exécution dans ce problème semble avoir coupé un EF chaîne de connexion et collé dans un endroit qui avait besoin d'une chaîne de connexion ADO. En fait, j'ai fait la même chose, mais le processus n'était pas aussi clair que ça.
Dans mon cas, j'ai eu une application web utilisée EF, de sorte que son site web.config correctement contenues EF chaînes de connexion.
J'ai publié un package de déploiement, et le processus vous invite pour les chaînes de connexion pour être utilisé lors du déploiement. Ceux-ci sont stockés dans le package de déploiement généré SetParameters.xml fichier.
J'ai coupé et collé l'EF chaînes de connexion dans la boîte de dialogue de publication du champs de saisie.
J'ai déployé l'application web, essayé d'y accéder, et a obtenu le "mot-Clé non pris en charge: les métadonnées d'erreur".
Ce que je ne savais pas, c'est que MS l'outil de publication prévu une chaîne de connexion ADO, et qu'étant donné qu'il allait construire un EF chaîne de connexion.
Le résultat a été que SetParameters.xml et mon web déployée.config avait chaînes de connexion qui ressemblait à ceci:
En d'autres termes, l'intégré de fournisseur de la chaîne de connexion est un EF chaîne de connexion et pas une chaîne de connexion ADO, donc quand EF essayé de l'utiliser pour se connecter à la base de données, il a généré cette erreur.
En d'autres mots, lorsque vous collez les chaînes de connexion dans la publication des dialogues, vous avez besoin de coller une chaîne de connexion ADO, pas un EF chaîne de connexion, même si ce que vous avez dans le web.config vous copiez est un EF chaîne de connexion.
Vous pouvez extraire une chaîne de connexion ADO de la chaîne de connexion fournisseur de champ d'un objectif EF chaîne de connexion, et c'est ce que vous aurez besoin, si vous êtes en utilisant la même connexion à la déployer comme vous l'avez fait dans le développement local.
Voici un code que j'utilise pour extraire le nom de base de données & nom du serveur à partir d'une chaîne de connexion.
Remarquez comment il vérifie si c'est une Entité Cadre de la chaîne de connexion, et si oui, il extrait le "fournisseur" chaîne de connexion de la partie de qui, qui peut ensuite être passé dans
SqlConnectionStringBuilder
:Si je n'a pas ce faire, j'aimerais obtenir que méchant "
Keyword Not Supported: Metadata
" erreur.Pour Azure Web App, la chaîne de Connexion type n'a pas "du Système.Les données.EntityClient", Personnalisé les bonnes œuvres.
Pour une utilisation dans Azure Paramètres de l'Application => Chaînes de Connexion:
Si la chaîne de connexion est généré par EF-concepteur, assurez-vous de remplacer
&qout;
avec"
dans la chaîne.Vérifier que le fournisseur=Système.Les données.SqlClient
Choisir le Type Personnalisé dans la liste déroulante
Si la connexion est pour un modèle (Entity Framework) de s'assurer que le chemin d'accès correct à votre modèle est utilisé
Ex: Un modèle "MyWebRoot/Modèles/Monmodèle.edmx" est configuré as: metadata=res:///Models.MyModel.csdl|res:///Models.MyModel.ssdl|res://*/Models.MyModel.msl;
Vérifier dans ce lieu
Comme vous pouvez le voir, il y a deux chaîne de connexion pour un ADO et un autre pour le Système de Connexion ou ce que vous voulez. Dans mon cas, ConnectionString est pour le système de Connexion j'ai donc utilisé que dans:-
Un vieux post, mais ma solution,
Malheureusement, elles n'ont pas le résoudre pour moi, en utilisant Azure Fonctions de parler à un projet distinct (bibliothèque de classe) avec un EDMX.
J'ai dû modifier le Contexte.CS constructeur de la classe de remplacement de la
: base ("Entities")
avec
: base (ConfigurationManager.ConnectionStrings["Entities"].ConnectionString)
J'espère que cela peut aider quelqu'un d'autre dans le besoin.