FAQ TBarCode .NET
Assenza del codice a barre dopo la distribuzione su Microsoft Azure
Assenza del codice a barre dopo la distribuzione su Microsoft Azure
TBarCode utilizza chiamate API Windows GDI per disegnare linee e renderizzare l'output di testo. Tuttavia, su Azure si presenta un problema a causa del blocco GDI del Web App sandbox. Questo blocco è implementato per motivi di sicurezza, poiché Microsoft limita le chiamate al driver video/schermo per ragioni di sicurezza. Di conseguenza, il codice a barre viene disegnato in modo frammentato oppure è del tutto assente. La funzionalità completa delle funzioni GDI è ottenibile solo con un server ospitato on-premise.
Soluzione: utilizzate l'interfaccia Callback Custom Drawing come alternativa alle chiamate API GDI.
- Scaricate il QR Code Web App Sample for .NET 6 (vedere la cartella ASPNETCoreWebApp).
- Fate riferimento a BarcodeController.cs: GetQRCodeImgNoGDI, che utilizza funzioni .NET tramite l'interfaccia Callback per disegnare il codice a barre. Questo metodo è adatto per i servizi Azure dove GDI non è accessibile.
- Se state utilizzando il Barcode Service precompilato dell'SDK (pacchetto WebDeploy), aggiornate all'ultima versione e impostate il parametro UseGDI=false.
Problemi con la dimensione font su Azure
Se la vostra intenzione è creare un codice a barre lineare con testo leggibile dall'uomo, è necessario anche l'output di testo tramite l'interfaccia Callback (il codice è incluso nell'esempio ASP.NET Core collegato sopra). A volte abbiamo notato un ridimensionamento indesiderato del font su Azure; in questo caso dovete usare un font installato e impostarne la dimensione.
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);