Ik heb een probleem met een base64 encoded string. Wanneer ik deze wil converteren naar een leesbare string dan krijg ik de melding:
System.FormatException: Invalid character in a Base-64 string
Het lijkt er dus op dat er een ongeldig character in de string zit die hij niet kan converteren. Echter het gekke is dat ik deze melding alleen met grote bestanden krijg op onze acceptatie server en niet op mijn eigen testpc.
Situatie: Inlezen van emails met attachments in .csv formaat op een exchange server via IMAP. De bijlage wordt automatisch geconverteerd naar base64 encoding wanneer ik deze ophaal via IMAP.
Het ophalen van deze emails gaat zonder problemen op mijn testpc, zowel kleine (paar kb) als grote (1 Mb) bestanden.
Het probleem zit hem echter in het feit dat onze acceptatie server hier wel problemen mee heeft. Wanneer ik deze testmails stuur met daarin kleine attachments gaat het goed, deze worden correct ingelezen. Echter de grote bestanden (>400kb) geven een probleem en triggeren de bovenstaande error.
Ik ben er nog niet achter wat hier nu precies het probleem kan zijn, waarom zit er ineens een invalid character in als ik de mail uitlees op een andere machine?
De enige afwijking van deze 2 systemen waar ik vanaf weet is het feit dat de testpc nederlandse instellingen heeft en de server op engels staat.
Hier heb ik al eerder aanpassingen voor gemaakt, echter zou dat hier volgens mij geen invloed moeten hebben.
Code:
In het 2e stukje heb ik wat debug code toegevoegd die onze errorlogging misbruikt, aangezien ik hier niet uitgebreid op kan debuggen. Het rare is dat de foreach op de testpc geen enkele logging triggert en exact hetzelfde bestand voor elk character triggert bij de grote bestanden op de acceptatie server?
De logregel: Invalid char: <- Leeg character dus
Iemand een idee waarom dit kan optreden?
- Carriage return eruit filteren, helpt niet
- Culture wisselen van nl-NL naar en-Us in testomgeving. Fout treed daar dan ook niet op.
- Spaties replacen naar +, zie Ander VB6 probleem
System.FormatException: Invalid character in a Base-64 string
Het lijkt er dus op dat er een ongeldig character in de string zit die hij niet kan converteren. Echter het gekke is dat ik deze melding alleen met grote bestanden krijg op onze acceptatie server en niet op mijn eigen testpc.
Situatie: Inlezen van emails met attachments in .csv formaat op een exchange server via IMAP. De bijlage wordt automatisch geconverteerd naar base64 encoding wanneer ik deze ophaal via IMAP.
Het ophalen van deze emails gaat zonder problemen op mijn testpc, zowel kleine (paar kb) als grote (1 Mb) bestanden.
Het probleem zit hem echter in het feit dat onze acceptatie server hier wel problemen mee heeft. Wanneer ik deze testmails stuur met daarin kleine attachments gaat het goed, deze worden correct ingelezen. Echter de grote bestanden (>400kb) geven een probleem en triggeren de bovenstaande error.
Ik ben er nog niet achter wat hier nu precies het probleem kan zijn, waarom zit er ineens een invalid character in als ik de mail uitlees op een andere machine?
De enige afwijking van deze 2 systemen waar ik vanaf weet is het feit dat de testpc nederlandse instellingen heeft en de server op engels staat.
Hier heb ik al eerder aanpassingen voor gemaakt, echter zou dat hier volgens mij geen invloed moeten hebben.
Code:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
| //Get the attachment byte[] decbuff = Convert.FromBase64String(attachmentBase64); //Deze regel triggert de fout string attachment = Encoding.UTF8.GetString(decbuff); //Test stuk om de string op de acceptatie server te testen foreach (char c in attachmentBase64) { //Check if its a valid char if (!Regex.IsMatch(c.ToString(), "[A-z0-9+/=\\s]")) { ErrorLog.LogError("Invalid char: " + c, DateTime.Now); //Triggert nooit in test, alleen wel in acceptatie } } |
In het 2e stukje heb ik wat debug code toegevoegd die onze errorlogging misbruikt, aangezien ik hier niet uitgebreid op kan debuggen. Het rare is dat de foreach op de testpc geen enkele logging triggert en exact hetzelfde bestand voor elk character triggert bij de grote bestanden op de acceptatie server?
De logregel: Invalid char: <- Leeg character dus
Iemand een idee waarom dit kan optreden?
edit:
Dingen die ik al heb geprobeerd
Dingen die ik al heb geprobeerd
- Carriage return eruit filteren, helpt niet
- Culture wisselen van nl-NL naar en-Us in testomgeving. Fout treed daar dan ook niet op.
- Spaties replacen naar +, zie Ander VB6 probleem
[ Voor 6% gewijzigd door FoOnEeN op 12-06-2009 16:12 ]