Проблема
Я пытаюсь использовать 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 - попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время, или не удалось установить соединение, поскольку подключенный хост не смог ответить.)
Что я пробовал
- Я пытался удалить и установить Entity Framework
- Вручную изменив значение версии на 6.4.0.0 в web.config, чтобы соответствовать packages.config
- Добавление 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 и не уверен, к чему это относится, но, похоже, он не работает на лестнице. Любое руководство приветствуется, спасибо!