FAQ TBarCode .NET
Absence de code-barres après le déploiement sur Microsoft Azure
Absence de code-barres après le déploiement sur Microsoft Azure
TBarCode utilise des appels d'API Windows GDI pour dessiner des lignes et rendre la sortie texte. Cependant, un problème survient sur Azure en raison du blocage de GDI par le sandbox de la Web App. Ce blocage est mis en œuvre pour des raisons de sécurité, Microsoft restreignant les appels au pilote vidéo/écran pour des raisons de sécurité. Par conséquent, le code-barres est soit dessiné de manière fragmentée, soit totalement absent. La fonctionnalité complète des fonctions GDI n'est possible qu'avec un serveur hébergé sur site (on-premise).
Solution : utilisez l'interface de rappel Custom Drawing comme alternative aux appels d'API GDI.
- Téléchargez l'exemple d'application Web QR Code pour .NET 6 (voir le dossier ASPNETCoreWebApp).
- Consultez BarcodeController.cs : GetQRCodeImgNoGDI, qui utilise des fonctions .NET via l'interface de rappel pour dessiner le code-barres. Cette méthode convient aux services Azure où GDI est inaccessible.
- Si vous utilisez le service de codes-barres précompilé du SDK (package WebDeploy), mettez-le à jour vers la dernière version et définissez le paramètre UseGDI=false.
Problèmes de taille de police sur Azure
Si votre intention est de créer un code-barres linéaire avec un texte lisible par l'homme, la sortie de texte via l'interface de rappel est aussi nécessaire (le code est inclus dans l'exemple ASP.NET Core lié ci-dessus). Nous avons parfois observé une mise à l'échelle de police indésirable sur Azure ; dans ce cas, vous devez utiliser une police installée et définir la taille.
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);