Во-первых, вместо отправки байтового массива base64 ваш веб-сервис просто возвращает байтовый массив для вашего файла. Response.OutputStream.Write()
автоматически закодирует ваши байты base64, поэтому вы можете также не закодировать их в потоке памяти.
Во-вторых, вам нужно больше, чем просто байты. Вам понадобятся метаданные, связанные с файлом. Для приведенного ниже фрагмента я поместил все эти метаданные в отдельный класс (локальный экземпляр с именем «file»). Затем просто используйте этот фрагмент, как только у вас есть необходимые данные:
Response.Clear();
Response.ClearHeaders();
Response.ContentType = file.ContentType;
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + file.FileName + "\"");
Response.AddHeader("Content-Length", file.FileSize.ToString());
Response.OutputStream.Write(file.Bytes, 0, file.Bytes.Length);
Response.Flush();
Response.End();