Задача AWS SES c # sendemailasync отменяется - PullRequest
0 голосов
/ 27 ноября 2018

Я работаю с asp.net core 2.0 и пытаюсь отправлять электронные письма через AWS SES, используя AWS SDK для .net.

Для этого я использую очень простой фрагмент кода, нопо какой-то причине асинхронная задача отменяется, когда я пытаюсь отправить.Есть ли что-то очевидное, что я здесь скучаю?Исключение, которое я получаю из этого кода, говорит: «Операция была отменена».Если я копаюсь в агрегированном исключении, оно, в частности, говорит, что задание было отменено.

Вот мой код.

public async Task<transactionresponse> sendemail(string subject, string message, string sender, string replyto, List<string> receivers, string[] attachment = null)
    {
        transactionresponse tr = new transactionresponse();
        try
        {
            AmazonSimpleEmailServiceClient client = new AmazonSimpleEmailServiceClient(RegionEndpoint.USWest2);
            sender = (sender == "" ? config.GetSection("appsettings:appemail").Value : sender);
            var dest = new Destination
            {
                ToAddresses = receivers,
            };

            var from = sender;
            var messagesubject = new Content(subject);
            var body = new Body(new Content(message));
            var msg = new Message(messagesubject, body);

            var request = new SendEmailRequest
            {
                Destination = dest,
                Message = msg,
                Source = from
            };
            SendEmailResponse sendit = await client.SendEmailAsync(request);
        }
        catch (Exception ex)
        {
            tr.errors = new string[] { ex.ToString() };
            tr.message = ex.Message;
            tr.iserror = true;
        }
        return tr;
    }

Вот исключение:

"Система.OperationCanceledException: операция была отменена. \ R \ n в System.Net.Http.HttpClient.HandleFinishSendAsyncError (Исключение e, CancellationTokenSource cts) \ r \ n
в System.Net.Http.HttpClient.FinishSnbuAs* 1 getTask) \ r \ n в Amazon.Runtime.Internal.Util.AsyncHelpers. <> C__DisplayClass1_1 1.<<RunSync>b__0>d.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n<br> at Amazon.Runtime.Internal.Util.AsyncHelpers.ExclusiveSynchronizationContext.BeginMessageLoop() in E:\\JenkinsWorkspaces\\v3-trebuchet-release\\AWSDotNetPublic\\sdk\\src\\Core\\Amazon.Runtime\\Internal\\Util\\_mobile\\AsyncHelpers.cs:line 142\r\n<br> at Amazon.Runtime.Internal.Util.AsyncHelpers.RunSync[T](Func 1 задача) в E: \ JenkinsWorkspaces \ v3-trebuchet-release \ AWSDotNetPublic \ sdk \ src \ Core \ Amazon.Runtime \ Internal \ Util \ _mobile \ AsyncHelpers.cs: строка 87 \ r \ n
в Amazon.Util.AWSSDKUtils.DownloadStringContent (Uri, TimeSpan, тайм-аут, прокси-сервер IWebProxy) в E: \ JenkinsWorkspaces \ v3-trebuchet-release\ AWSDotNetPublic \ sdk \ src \ Core \ Amazon.Util \ AWSSDKUtils.cs: строка 1000 \ r \ n
в Amazon.Util.EC2InstanceMetadata.GetItems (относительная строкаOrAbsolutePath, попытки Int32, логическая ошибка) в E: \ JenkinsWorksv3-trebuchet-release \ AWSDotNetPublic \ sdk \ src \ Core \ Amazon.Util \ _bcl + coreclr \ EC2InstanceMetadata.cs: строка 513 \ r \ n
на сайте Amazon.Util.EC2InstanceMetadata.get_IAMSecurityCredentials () в Eens:\ v3-trebuchet-release \ AWSDotNetPublic \ sdk \ src \ Core \ Amazon.Util \ _bcl + coreclr \ EC2InstanceMetadata.cs: строка 311 \ r \ n
в Amazon.Runtime.DefaultInstanceProfileAWSCredentials.FetchCredentials: в ()JenkinsWorkspaces \ v3-trebuchet-release \ AWSDotNetPublic \ sdk \ src \ Core \ Amazon.Runtime \ Credentials \ _bcl + coreclr \ DefaultInstanceProfileAWSCredentials.cs: строка 142 \ r \ n
в хранилище данных Amazon.Runtime.DefaultInstanceE: \ JenkinsWorkspaces \ v3-trebuchet-release \ AWSDotNetPublic \ sdk \ src \ Core \ Amazon.Runtime \ Credentials \ _bcl + coreclr \ DefaultInstanceProfileAWSCredentials.cs: строка 88 \ r \ n
в Amazon.Runtime.DefaultInstre() в E: \ JenkinsWorkspaces \ v3-trebuchet-release \ AWSDotNetPublic \ sdk \ src \ Core \ Amazon.Runtime \ Credentials \ _bcl + coreclr \ DefaultInstanceProfileAWSCredentials.cs: строка 106 \ r \ n
в Amazon.Runtime.Internal.CredentialsRetriever.InvokeAsync [T] (IExecutionContext исполнительный_контекст) в E: \ JenkinsWorkspaces \ v3-trebuchet-release \ublic \ AWST \ sSDCore \ Amazon.Runtime \ Pipeline \ Handlers \ CredentialsRetriever.cs: строка 90 \ r \ n
в Amazon.Runtime.Internal.RetryHandler.InvokeAsync [T] (IExecutionContext executeContext) \ r \ n в Amazon.Runtime.Internal.RetryHandler.InvokeAsync [T] (IExecutionContext executeContext) в E: \ JenkinsWorkspaces \ v3-trebuchet-release \ AWSDotNetPublic \ sdk \ src \ Core \ Amazon.Runtime \ Pipeline \ RetryHandler \ RetryHandler.cs: строка 137Amazon.Runtime.Internal.CallbackHandler.InvokeAsync [T] (IExecutionContext executeContext) \ r \ n
в Amazon.Runtime.Internal.CallbackHandler.InvokeAsync [T] (IExecutionContext исполнительный_контекст) \ r \ n в Amazon.Runtime..ErrorCallbackHandler.InvokeAsync [T] (IExecutionContext executeContext) \ r \ n в Amazon.Runtime.Internal.MetricsHandler.InvokeAsync [T] (IExecutionContext executeContext) \ r \ n
at webworxfive.Helpers.messaging.sendemail (строковая тема, строковое сообщение, отправитель строки, ответ на строку, получатель List`1, вложение строки []) в messageaging.cs: строка 48 "

1 Ответ

0 голосов
/ 27 ноября 2018

Хорошо, я понял это самостоятельно.Очевидно, мое приложение не получало ключ доступа и секретный ключ из настроек моего профиля aws sdk.Когда я добавил его в мои appsettings и вызвал его в код отправленный код.Кажется, я помню, что он всегда захватывал выбранные ключи профиля, когда у вас был установлен плагин visual studio.Возможно, я неправильно запомнил.

Спасибо за комментарии.

...