Как получить "поток" с помощью метода GetAsync HttpClient в C# MVC?

Я пытаюсь получить объект "поток" через API, а затем загрузить его в сообщение, которое будет отправлено по почте. Весь процесс работает, но проблема в том, что при просмотре документов, потому что, когда я вхожу в почтовый ящик любого из получателей, и пытаюсь просмотреть или загрузить и открыть их из любого читателя PDF, я получаю следующее сообщение:

При загрузке документа PDF произошла ошибка.

Я не знаю, происходит ли потеря содержимого документа во время выполнения запроса к API или когда я отправляю почту (которая проверяется с помощью smtp, аутентифицирована с помощью oAuth2). Кто-нибудь может мне помочь? Ниже я показываю ключевые фрагменты моего исходного кода:

App.Sell.Models.DocDTO.DocTypes docType = (App.Sell.Models.DocDTO.DocTypes)Session["AttachDocType"];
string docEntry = (string)Session["AttachDocEntry"];
string docNum = (string)Session["AttachDocNum"];

using (var cl = new HttpClient()) 
{
  //cl.BaseAddress = new Uri("http://localhost:xxxxx/");
  cl.BaseAddress = new Uri(ServiceRoute.cnString() + "MyWsOneSell/");
  cl.DefaultRequestHeaders.Accept.Clear();
  cl.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
  var s = cl
    .GetAsync("api/PdfDocument/GetStreamDocument/" + c.DBName + "/" + docType + "/" + docEntry)
    .Result
    .Content.ReadAsStreamAsync().Result;

    mailMessage.Attachments.Add(new System.Net.Mail.Attachment(s, docType + docNum + ".pdf", "application/pdf"));
}

И вот где я отправил письмо:

var mimeMessage = MimeKit.MimeMessage.CreateFromMailMessage(mailMessage);
using (var client = new SmtpClient())
{
  client.Connect("smtp.gmail.com", 587, SecureSocketOptions.StartTls); 
  var oauth2 = new SaslMechanismOAuth2(Email.From, Token.AccessToken);
  client.Authenticate(oauth2);

  try
  {
    client.Send(mimeMessage);
... rest of code. 
  }
  ...

0 ответов

Другие вопросы по тегам