В C # у меня есть веб-сервис с результатом операции, определенным следующим образом:
OperationResult<createAccountResponse> CreateAccount(string token, createAccountServiceModel model);
Внутри этого метода я вызываю другой метод с сигнатурой, указывающей, что он асинхронный, например:
var sendEmailInvite = this.SendExhibitorInviteEmailAsync(new ExhibitorInviteEmailPartialRequest()
{
CompanyId = company.CompanyID,
EventId = event.EventID
});
А внутри SendExhibitorInviteEmailAsync я жду метод, который также помечается как асинхронный.Вот этот метод (сокращенно для краткости)
public async Task<ExhibitorInviteEmailResponse> SendExhibitorInviteEmailAsync(ExhibitorInviteEmailResolvedRequest request)
{
ExhibitorInviteEmailResponse response = null;
try
{
response = new ExhibitorInviteEmailResponse();
var apiKey = "snip";
var client = new SendGridClient(apiKey);
var msg = new SendGridMessage();
msg.SetFrom(new EmailAddress("noreply@domain.com", "Display name"));
msg.AddTo(new EmailAddress(request.EmailAddress, request.AccountOwnerFirstName));
msg.SetTemplateId("snipped");
\
msg.SetTemplateData(dynamicTemplateData);
await client.SendEmailAsync(msg);
}
catch (Exception ex)
{
response = new ExhibitorInviteEmailResponse
{
Success = false,
Error = true,
ErrorMessage = ex.Message
};
}
return response;
}
Если электронное письмо предназначено для отправки (поле флага в json), тогда я начинаю работать с электронным письмом. Если электронное письмо не предназначено для отправки,весь метод занимает около секунды, что было раньше.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю этот метод из Postman или из C #, сгенерированного Postman, кажется, что асинхронный код для отправки электронной почты вызываетдлительность запроса не должна превышать 30 секунд - похоже, что-то не ждет отправки письма?Когда я запускаю это через браузер, оно работает через 1-2 секунды без задержки.
Каков рекомендуемый поток при использовании Postman и async?Должны ли родители всех внутренних методов ждать?