Win32 DLL не найдена ошибка в веб-приложении Azure - PullRequest
1 голос
/ 10 июня 2019

У меня есть веб-приложение, размещенное в Azure.Когда я запускаю приложение и аутентифицирую пользователя, я получаю сообщение об ошибке «Одна из зависимых DLL не найдена».

Справочная информация:

В веб-приложенииЯ использую функцию сканера отпечатков пальцев для захвата изображения отпечатка пальца.Чтобы захватить изображение отпечатка пальца во время регистрации пользователя, я использую библиотеку JavaScript, и она отлично работает.Я храню отпечаток пальца на складе.Когда пользователь входит в систему на веб-сайте, мне нужно выполнить аутентификацию, и я снова собираю отпечатки пальцев у пользователя и сравниваю их с отпечатком, связанным с пользователем.Для сравнения двух изображений отпечатков пальцев на стороне сервера мой код C # вызывает SDK сканера отпечатков пальцев, который, в свою очередь, вызывает зависимые библиотеки DLL (из System32), которые, как мне кажется, поставляются с SDK сканера отпечатков пальцев.Когда я запускаю сайт локально, он работает нормально (так как на локальном компьютере установлен SDK для отпечатков пальцев).Но при развертывании приложения в Azure и выполнении этого кода появляется сообщение об ошибке «Одна из зависимых библиотек DLL не найдена».Я понимаю, что во время выполнения выполняется поиск одной зависимой библиотеки DLL из папки system32, которой нет в среде Azure.

Я попытался скопировать библиотеки DLL сканера отпечатков пальцев в папку bin веб-приложений Azure, но она не работает.Я получаю сообщение об ошибке Была предпринята попытка загрузить программу с неверным форматом.(Исключение из HRESULT: 0x8007000B) .

Изображение - показывает, что DLL добавлена ​​в корневую папку

Я также попытался включить системный 32 DLL в класс ядра .netпроект библиотеки, но выдает ошибку Ссылка недействительна или не поддерживается

Изображение - Ошибка при добавлении system32 DLL в основной проект .net

Есть лиМожно ли установить стороннее программное обеспечение в веб-приложение Azure?

Ответы [ 3 ]

1 голос
/ 10 июня 2019

Невозможно напрямую установить сторонние библиотеки DLL в службе приложений. Одним из способов решения этой проблемы является развертывание приложения в контейнере Windows, который служба приложений извлекает и запускает. Другой способ - использовать виртуальную машину вместо службы приложений. Таким образом, вы получаете полный контроль над машиной и можете устанавливать все, что захотите.

0 голосов
/ 13 июня 2019

Ниже приведены шаги по устранению проблемы

• Убедитесь, что правильная собственная библиотека (сторонние библиотеки DLL) скопирована в папку wwwroot на сервере (64-битная или 32-битная)

• Проверьте платформу конфигурации веб-службы Azure (если сторонняя dll является 64-битной, то измените на 64-битную)

• Из Visual Studio, пока публикуйте приложение с использованием веб-развертывания, убедитесь, что режим развертывания является автономным иЦелевая среда выполнения win-x64

Дополнительные вещи, которые необходимо позаботиться

• Если проект находится в ядре .net, то мы не можем добавить прямую ссылку на dll третьей части, нам нужно добавитьсуществующий элемент и в свойстве dll убедитесь, что он всегда копирует

• Измените целевую платформу на 64 или 32-битную в соответствии с требованиями проекта

Вышеуказанные шаги работают для меня

0 голосов
/ 12 июня 2019

Одна из возможностей - использовать контейнеры Windows в службе приложений.

Здесь вы можете выполнить быстрый запуск для запуска контейнера Windows в службе приложений:

https://docs.microsoft.com/en-us/azure/app-service/app-service-web-get-started-windows-container

1008 *

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