“Microsoft.SqlServer.Types” version 10 ou supérieure est introuvable sur Azure

J’essaie de créer une webapi dans ASP.NET MVC 4. Le webapi utilisait les types Entity Framework 5 Spatial et j’ai écrit un code très simple.

public List GetAllAreas() { List aList = db.Areas.ToList(); return aList; } 

La zone contient DbGeometry.

Quand je lance ce local, ça marche, mais quand je le publie sur Azure, ça me donne cette erreur:

Les types et fonctions spatiales ne sont pas disponibles pour ce fournisseur car l’assembly «Microsoft.SqlServer.Types» version 10 ou ultérieure est introuvable.

Quelqu’un sait comment résoudre ceci ? 🙂

Merci!

J’ai trouvé la solution! Installez simplement le package nuget Microsoft.SqlServer.Types

PM> Package-Install Microsoft.SqlServer.Types

Lien pour plus d’infos

La réponse ci-dessus fonctionne correctement lorsque la version 11 (SQL Server 2012) de l’assembly peut être utilisée.

J’ai eu un problème avec ceci car ma solution a d’autres dépendances sur la version 13 (SQL Server 2016) du même assemblage. Dans ce cas, notez que Entity Framework (au moins v6.1.3) est codé en dur dans son SqlTypesAssemblyLoader (la source de cette exception) pour rechercher uniquement les versions 10 et 11 de l’assembly.

Pour contourner ce problème, j’ai découvert que vous pouvez indiquer à Entity Framework l’assemblage que vous souhaitez utiliser comme ceci:

 SqlProviderServices.SqlServerTypesAssemblyName = "Microsoft.SqlServer.Types, Version=13.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"; 

Pour une raison quelconque, il me manquait une redirection de liaison qui a résolu ce problème pour moi.

Ajout du suivant a corrigé mon problème

      

Il existe deux façons de résoudre ce problème:

  1. Si vous disposez d’un access serveur, installez simplement «Types de système CLR Microsoft pour SQL Server 2012» sur https://www.microsoft.com/en-us/download/details.aspx?id=29065 ou utilisez le lien direct sous le lien direct. vers X86: http://go.microsoft.com/fwlink/?LinkID=239643&clcid=0x409 , ou Lien direct vers X64: http://go.microsoft.com/fwlink/?LinkID=239644&clcid=0x409
  2. La deuxième manière consiste à utiliser le gestionnaire de paquets NuGet et à installer

    Package d’installation Microsoft.SqlServer.Types

Suivez ensuite les notes du plugin comme ci-dessous

Pour déployer une application qui utilise des types de données spatiales sur une machine sur laquelle les «Types de CLR système pour SQL Server» ne sont pas installés, vous devez également déployer l’assemblage natif SqlServerSpatial110.dll. Les versions x86 (32 bits) et x64 (64 bits) de cet assembly ont été ajoutées à votre projet sous les sous-répertoires SqlServerTypes \ x86 et SqlServerTypes \ x64. L’assembly natif msvcr100.dll est également inclus dans le cas où le runtime C ++ n’est pas installé.

Vous devez append du code pour charger le bon de ces assemblys à l’exécution (en fonction de l’architecture actuelle).

Applications ASP.NET Pour les applications ASP.NET, ajoutez la ligne de code suivante à la méthode Application_Start dans Global.asax.cs:

 SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin")); 

Applications de bureau Pour les applications de bureau, ajoutez la ligne de code suivante à exécuter avant toute opération spatiale:

 SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory); 

J’ai également rencontré ce problème, mais le package nuget Microsoft.SqlServer.Types était déjà installé.

Ce qui a résolu le problème pour moi était d’aller dans Solution> Références> System.Data.Entity> Propriétés> Copier local et de le définir sur True.

Remarque: Copy Local for Microsoft.SqlServer.Types était déjà défini sur true et, même si le problème était lié à System.Data.Entity, le message d’erreur concernait toujours Microsoft.SqlServer.Types.

La solution provient du forum Windows Azure .

La solution pour moi consistait simplement à append cette ligne de code à Global.asax.cs dans Application_Start() :

 SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin")); 

Bonne chance mes frères.

Aucune des solutions ci-dessus ne m’a fonctionné.

  • SQL Server Feature Pack installé? Oui
  • Pack NuGet installé? Oui
  • DLL existe dans GAC et dans la corbeille du projet? Oui

Vous savez quoi, cette erreur peut également être due à de faibles ressources sur le serveur . J’ai redémarré le serveur SQL et il a été résolu automatiquement.

Juste eu le même problème. J’utilise EF6 et EF6 SQL qui a une fonction SQL qui utilise des commandes spatiales. J’ai testé cela à travers un test unitaire et cela a bien fonctionné. Quand je suis allé câbler ma solution Asp.Net , j’ai reçu l’erreur

Les types et fonctions spatiales ne sont pas disponibles pour ce fournisseur car l’assembly «Microsoft.SqlServer.Types» version 10 ou ultérieure est introuvable.

En ajoutant le package NUGET “Microsoft.SqlServer.Types” et en ajoutant SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin")); à la Application_Start method dans Global.asax.cs tout fonctionnait bien.

Dans mon cas, une chaîne de connexion mal composée a causé cela. Vérifiez si votre chaîne de connexion est correctement composée.

S’il vous plaît append “dependentAssembly” le fichier Web.config

         

Ceci est travaillé pour moi