Я пытаюсь создать webapi в ASP.NET MVC 4. Webapi использовал пространственные типы Entity Framework 5, и я написал очень простой код.
public List<Area> GetAllAreas()
{
List<Area> aList = db.Areas.ToList();
return aList;
}
Область содержит DbGeometry.
Когда я запускаю этот локальный сервер, он работает, но когда я публикую его в лазурном, он дает мне эту ошибку:
Пространственные типы и функции недоступны для этого поставщика, поскольку не удалось найти сборку Microsoft.SqlServer.Types версии 10 или выше.
Кто-нибудь знает, как это решить? :)
Спасибо!
asp.net-mvc
entity-framework
azure
Томас Боландер
источник
источник
Ответы:
Я нашел решение! Просто установите пакет nuget Microsoft.SqlServer.Types
Ссылка для получения дополнительной информации
источник
Приведенный выше ответ отлично работает, когда можно использовать версию 11 (SQL Server 2012) сборки.
У меня возникла проблема, так как мое решение имеет другие зависимости от версии 13 (SQL Server 2016) той же сборки. В этом случае обратите внимание, что Entity Framework (по крайней мере, v6.1.3) жестко запрограммирован в его SqlTypesAssemblyLoader (источник этого исключения), чтобы искать только версии 10 и 11 сборки.
Чтобы обойти это, я обнаружил, что вы можете указать Entity Framework, какую сборку вы хотите использовать следующим образом:
источник
EntityContext
класса (который наследуетсяDbContext
).SqlProviderServices.SqlServerTypesAssemblyName = typeof(SqlGeography).Assembly.FullName;
По какой-то причине мне не хватало перенаправления привязки, которое устранило эту проблему для меня.
Добавление следующего исправило мою проблему
источник
AppDomain currentDomain = AppDomain.CurrentDomain; Assembly[] assems = currentDomain.GetAssemblies(); foreach (Assembly assembly in assems) { _logger.Info(assembly.GetName().FullName); }
где _logger - регистратор NlogЕсть 2 способа исправить это:
Второй способ - использовать диспетчер пакетов NuGet и установить
Установочный пакет Microsoft.SqlServer.Types
Затем следуйте примечаниям к плагину, как показано ниже
источник
~/
вместо~/bin
. Не забудьте также проверить свой путь.Я тоже столкнулся с этой проблемой, но пакет nuget Microsoft.SqlServer.Types уже был установлен.
Что решило проблему для меня, это Решение> Ссылки> System.Data.Entity> Свойства> Копировать локально и установка для него значения True.
Примечание. Копировать локально для Microsoft.SqlServer.Types уже было установлено в значение true, и даже несмотря на то, что проблема была с System.Data.Entity, сообщение об ошибке все еще относилось к Microsoft.SqlServer.Types.
Решение взято с форума Windows Azure .
источник
Пожалуйста, добавьте файл Web.config «зависимая сборка»
Это сработало для меня
источник
Решение для меня было просто добавить эту строку кода в Global.asax.cs в
Application_Start()
:Удачи, братья мои.
источник
После комментария в ответе на текущую публикацию добавление этих двух строк (предпочтительно к основной функции) решило мою проблему для консольного приложения:
источник
В моем случае (а WebForms App) Я решил эту проблему , добавив следующие строки в
Application_Start
изGlobal.asax
файла.Надеюсь, это кому-то поможет.
источник
Ни одно из вышеперечисленных решений не помогло мне.
Вы знаете, что эта ошибка также может быть связана с нехваткой ресурсов на сервере . Я перезапустил SQL-сервер, и он разрешился автоматически.
источник
Была такая же проблема. Я использую
EF6
иSQL
вызываю функцию SQL, которая использует пространственные команды. Я протестировал это с помощью модульного теста, и он работал нормально. Когда я пошел подключать своеAsp.Net
решение, я получил сообщение об ошибкеПри добавлении
NUGET
пакета «Microsoft.SqlServer.Types» и добавивSqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
кApplication_Start method
вGlobal.asax.cs
все работало отлично.источник
В моем случае причиной этого была неправильно составленная строка подключения. Убедитесь, что ваша строка подключения правильно составлена.
источник