async / await, кажется, зависает внутри веб-метода - PullRequest
0 голосов
/ 29 мая 2019

В 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?Должны ли родители всех внутренних методов ждать?

...