Не удалось загрузить файл или сборку EntityFramework ошибка в Windows Контейнер с Azure SQL База данных - PullRequest
0 голосов
/ 08 марта 2020

Проблема

Я пытаюсь использовать Azure SQL с проектом. NET 4.7.2. Проект отлично работает с базой данных, пока я не попытаюсь ее контейнировать. После добавления Docker на Windows я получаю следующую ошибку при попытке посетить страницы, которые пытаются получить или отправить в базу данных.

Проект

  • ASP. NET MVC 4.7.2
  • Entity Framework 6.4, загруженный из диспетчера пакетов Nuget
  • Azure SQL База данных
  • Docker локально работающий двигатель (Windows)
  • Azure: служба приложений для контейнеров

Ошибка (при работе на Azure)

Не удалось загрузить файл или сборку 'EntityFramework, версия = 6.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089 'или одна из его зависимостей. Системе не удается найти указанный файл.

При локальном запуске

SqlException: ошибка сети или спецификация экземпляра c произошла при установлении соединения с SQL Сервер. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра правильное и что SQL Сервер настроен для разрешения удаленных подключений (поставщик: поставщик TCP, ошибка: 0 - попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время, или не удалось установить соединение, поскольку подключенный хост не смог ответить.)

Что я пробовал

  1. Я пытался удалить и установить Entity Framework
  2. Вручную изменив значение версии на 6.4.0.0 в web.config, чтобы соответствовать packages.config
  3. Добавление IP-адреса в Azure для установки брандмауэра

Строка подключения

<connectionStrings>
    <add name="MyAzureConnection" connectionString="Server=tcp:<myservername>.database.windows.net,1433;Initial Catalog=<mydbname>;Persist Security Info=False;User ID=<serverID>;Password=<mypassword>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" providerName="System.Data.SqlClient" />
</connectionStrings>

packages.config

     <package id="EntityFramework" version="6.4.0" targetFramework="net472" />
<entityFramework>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v13.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>

Web.config

      <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

Dockerfile

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
WORKDIR /inetpub/wwwroot
COPY . .

Я видел ту же ошибку и темы в других местах на сайте, но ни один из вопросов / предлагаемых решений не касался контейнеров Docker / Windows и не работал с моей стороны, когда я их пробовал. Я предполагаю, что мне не хватает некоторых знаний при работе с docker & ef, но я только нахожу. NET Основные примеры. Примечательно, что сначала я создал идентичную версию этого приложения с. NET Core, и оно работало нормально, но я менее знаком с. NET Framework.

Я также должен отметить, что моя строка подключения находится в Web.Config, а не в Web.Release.Config ... Я новичок в. 1090 * Framework и не уверен, к чему это относится, но, похоже, он не работает на лестнице. Любое руководство приветствуется, спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...