FAQ TBarCode .NET
Отсутствие штрихкода после развёртывания в Microsoft Azure
Отсутствие штрихкода после развёртывания в Microsoft Azure
TBarCode использует вызовы Windows GDI API для рисования линий и вывода текста. Однако на Azure возникает проблема из-за блокировки GDI в песочнице Web App. Эта блокировка реализована по соображениям безопасности, поскольку Microsoft ограничивает вызовы к видео/экранному драйверу из соображений безопасности. В результате штрихкод либо рисуется фрагментарно, либо полностью отсутствует. Полная функциональность функций GDI достижима только на сервере, размещённом локально (on-premise).
Решение: используйте интерфейс обратного вызова Custom Drawing как альтернативу вызовам GDI API.
- Скачайте пример веб-приложения QR-кода для .NET 6 (см. папку ASPNETCoreWebApp).
- Обратитесь к BarcodeController.cs: GetQRCodeImgNoGDI, который использует функции .NET через интерфейс обратного вызова для отрисовки штрихкода. Этот метод подходит для служб Azure, где GDI недоступен.
- Если вы используете предварительно скомпилированную веб-службу штрихкодов из SDK (пакет WebDeploy), обновитесь до последней версии и задайте параметр UseGDI=false.
Проблемы с размером шрифта на Azure
Если вы намерены создать линейный штрихкод с человекочитаемым текстом, также необходим вывод текста через интерфейс обратного вызова (код включён в пример ASP.NET Core, указанный выше по ссылке). Иногда на Azure наблюдалось нежелательное масштабирование шрифта, в этом случае нужно использовать установленный шрифт и задать его размер.
barcode.Font = new System.Drawing.Font("Microsoft Sans Serif", 10, System.Drawing.FontStyle.Regular, GraphicsUnit.Point);
barcode.Font = new System.Drawing.Font("Microsoft Sans Serif", 12, System.Drawing.FontStyle.Regular, GraphicsUnit.Pixel);