Как получить "поток" с помощью метода 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.
}
...