Ошибка подключения к базе данных SQL Azure при запуске приложения консоли .Net Core в качестве веб-задания Azure - PullRequest
0 голосов
/ 13 марта 2019

У меня есть консольное приложение .Net Core, которое подключается к базе данных SQL Azure с использованием структуры сущностей. Все мысли хорошо работают локально, но когда я создал пакет публикации с помощью этой командной строки

dotnet publish -c Релиз -r win-x64 - самодостаточный false

Заархивировал его, загрузил и использовал в веб-задании Azure. Я получаю это исключение в выводе задания:

Произошла ошибка при подключении к базе данных «myDB» на сервере «tcp: myServer.database.windows.net, 1433».

[13.03.2009 19:10:11> 62ab86: INFO] System.TypeInitializationException: инициализатор типа для 'System.Data.SqlClient.TdsParser' вызвал исключение. ---> System.TypeInitializationException: инициализатор типа для 'System.Data.SqlClient.SNILoadHandle' вызвал исключение. ---> System.BadImageFormatException: была предпринята попытка загрузить программу с неверным форматом. (Исключение из HRESULT: 0x8007000B)

Я добавил этот раздел в файл .json, но это не помогло

"runtimes": {
"win7-x64": {},
"win10-x64": {}
}

1 Ответ

1 голос
/ 14 марта 2019

Очевидно, что при переносе проекта .NET Core в формат csproj существуют определенные условия, при которых результирующий csproj не получит явное <PlatformTarget>.

А Visual Studio, похоже, неведут себя одинаково при обычной сборке и публикации.

В обеих базах он создает исполняемый файл PE32 только с 32-разрядной версией.Но при публикации он будет развертывать 64-битные библиотеки вместе, что приведет к вышеупомянутому BadImageFormatException, в то время как этого не происходит в не публикуемой сборке .

Решение:

На странице project>Properties>Build выберите значения platform target до x64.Событие, если оно не имеет никакого визуального эффекта, явное будет добавлено к csproj при сохранении.

<PlatformTarget>x64</PlatformTarget>
...