Я считаю, что кодировка является проблемой.Файл PDF не является ни строкой, ни файлом ASCII, поэтому эти строки ошибочны:
string theTextFile = wc.DownloadString(url);
byte[] fileStream = Encoding.ASCII.GetBytes(theTextFile);
Я бы предложил изменить ваш веб-клиент, чтобы загрузить двоичный файл, например application/pdf
, и сохранить его локально, например, в d:\temp\invoice.pdf
.
Затем вы можете сделать это:
var bytes = File.ReadAllBytes(@"d:\temp\invoice.pdf");
var body = Convert.ToBase64String(bytes);
Короче, не пытайтесь поместить PDF-файл в строку или используйте кодировку ASCII для получения его байтового массива.Это двоичный файл, пока вы не конвертируете его в Base64.
Конечно, вы также можете получить ваш веб-клиент, чтобы загрузить файл в память и преобразовать его в Base64, не записывая файл локально.Я просто хотел, чтобы в простейшем примере был смысл кодировки.