FatturaElettronica.NET icon indicating copy to clipboard operation
FatturaElettronica.NET copied to clipboard

Problema FatturaBase.CreateInstanceFromXml

Open aferende opened this issue 3 years ago • 3 comments

Ciao Nicola, per la fattura in allegato Fattura.zip si presenta un bug durante la chiamata al metodo FatturaBase.CreateInstanceFromXml.

Questo l'errore: System.FormatException The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters. at System.Convert.FromBase64_ComputeResultLength(Char* inputPtr, Int32 inputLength) at System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength) at System.Convert.FromBase64String(String s) at FatturaElettronica.FatturaBase.CreateInstanceFromXmlSignedBase64(Stream stream, Boolean validateSignature) at FatturaElettronica.FatturaBase.CreateInstanceFromXmlSigned(Stream stream, Boolean validateSignature) at FatturaElettronica.FatturaBase.CreateInstanceFromXml(Stream stream, Boolean validateSignature)

Premetto che questa fattura ha una moltitudine di stranezze e chi l'ha prodotta andrebbe messo a pane ed acqua per 1 settimana ma è arrivata così (passiva) da SDI ... segno che per loro è ok (ho cambiato ovviamente i dati sensibili all'interno).

Grazie in anticipo. Andrea

aferende avatar Mar 31 '21 22:03 aferende

Ciao, scusa per il ritardo. È un problema interessante. Credo sia il padding alla fine di ogni riga a creare il problema. Anche usando IgnoreWhitespace=true non si riesce a leggerla. Ovviamente puoi risolvere pre-processando il file, cosa che immagino tu abbia già fatto. Sarebbe interessante incorporare una soluzione. Se ho tempo settimana prossima approfondisco (suggerimenti e pull-request sono benvenuti/e).

nicolaiarocci avatar May 28 '21 14:05 nicolaiarocci

Ciao Nicola, tranquillo immagino. Si ovviamente ripulendo prima la fattura viene letta correttamente ma bisognerebbe dove la deserializzazione si incavola. Nel weekend sicuro mi ci metto e ti do una mano.

PS: Questa fattura è arrivata da SDI come passiva ... quindi dal loro punta di vista è corretto (loro sono su Java/Linux e quindi chissà che combinano). Ti faccio sapere. Grazie, A.

Il giorno ven 28 mag 2021 alle ore 16:58 Nicola Iarocci < @.***> ha scritto:

Ciao, scusa per il ritardo. È un problema interessante. Credo sia il padding alla fine di ogni riga a creare il problema. Anche usando IgnoreWhitespace=true non si riesce a leggerla. Ovviamente puoi risolvere pre-processando il file, cosa che immagino tu abbia già fatto. Sarebbe interessante incorporare una soluzione. Se ho tempo settimana prossima approfondisco (suggerimenti e pull-request sono benvenuti/e).

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/333#issuecomment-850479027, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADF4QXKGHYNNKPO43GZWYKDTP6VQ7ANCNFSM42FWGVYQ .

aferende avatar May 28 '21 17:05 aferende

Ciao Nicola, nel weekend ho provato a fare un po' di debug.

Il problema sembra essere insito alla classe Stream. Se invece si utilizza uno StreamReader non c'è alcun problema. Di seguito il frammento di codice utilizzato e che NON da problemi con quella fattura:

var reader = new StreamReader(file); XmlReader rdr = XmlReader.Create(reader); while (rdr.Read()) { Console.WriteLine(rdr.Value); }

Sinceramente non riesco a capire perchè utilizzando Stream si blocchi; ipotizzo un bug congenito di .NET a questo punto. Un'idea potrebbe essere quella di innestare una lettura tramite StreamReader ma ovviamente bisognerebbe fare un po' di regression test perchè andremmo a toccare il "cuore" di FatturaElettronica.NET Fammi sapere cosa ne pensi. Se serve, sono a disposizione. Andrea.

Il giorno ven 28 mag 2021 alle ore 16:58 Nicola Iarocci < @.***> ha scritto:

Ciao, scusa per il ritardo. È un problema interessante. Credo sia il padding alla fine di ogni riga a creare il problema. Anche usando IgnoreWhitespace=true non si riesce a leggerla. Ovviamente puoi risolvere pre-processando il file, cosa che immagino tu abbia già fatto. Sarebbe interessante incorporare una soluzione. Se ho tempo settimana prossima approfondisco (suggerimenti e pull-request sono benvenuti/e).

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/333#issuecomment-850479027, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADF4QXKGHYNNKPO43GZWYKDTP6VQ7ANCNFSM42FWGVYQ .

aferende avatar May 31 '21 13:05 aferende

Ciao Nicola ,

questo issue è ancora in piedi, putroppo abbiamo ricevuto fatture con questo problema e mi chiedevo come gestirle.

Grazie

Ciao

tanogae avatar Dec 07 '23 15:12 tanogae

Confermo, capita anche a me questo errore ma parliamo di casi veramente rari dal lato mio 10 casi nel 2023 su decine di migliaia di fatture. Io ho dovuto gestirle manualmente ma al prossimo caso vedro' di farci caso a cosa e' dovuto

username77 avatar Jan 05 '24 07:01 username77

nel mio caso ho trovato il problema nella parte del encoding dove mi e' bastato cambiare: <?xml version="1.0" encoding="windows-1252"?> con questo <?xml version="1.0" encoding="UTF-8"?>

Da notare cmq che nelle fatture anomale io ho come fine riga "CrLf" invece di "Lf". Cambiando in UTF-8 il fine riga viene letto bene in entrambi i casi.

username77 avatar Jan 05 '24 09:01 username77