SendGrid API v3 post break示例

时间:2016-08-11 09:58:14

标签: .net sendgrid

我已经为我的ASP.Net项目升级到SendGrid API v3,并发现在IIdentityMessageService.SendAsync函数中发送电子邮件的旧代码存在问题。

我的代码如下:

{{1}}

此代码在API v2中运行良好,但我现在在访问响应对象时收到System.MissingMemberException。

在新的示例中,等待帖子,但我可以将SendAsync签名更改为Async,因为它不是我的代码。

1 个答案:

答案 0 :(得分:0)

在另一个SO帖子here中找到答案 - post返回的对象现在是一个ConfiguredAwaitable对象 - 结果可以通过.GetAwaiter()。GetResult()访问如下:

Public Class EmailService
    Implements IIdentityMessageService

    Public Function SendAsync(message As IdentityMessage) As Task Implements IIdentityMessageService.SendAsync
        Dim sg = New SendGridAPIClient(ConfigurationManager.AppSettings("SendGridApiKey"))

        Dim from = New Email("support@investorsedge.net", "InvestorsEdge")
        Dim [to] = New Email(message.Destination)
        Dim Content = New Content("text/html", message.Body)
        Dim Mail = New Mail(from, message.Subject, [to], Content)

        Dim response = sg.client.mail.send.post(requestBody:=Mail.Get()).GetAwaiter().GetResult()
        If Not response.StatusCode = Net.HttpStatusCode.Accepted Then
            AtlasDb.Log.ErrorFormat("EmailService.SendAsync", "Abnormal response code ({0}", response.StatusCode)
        End If

        Return Task.FromResult(response.StatusCode)
    End Function
End Class

我在普通代码中不确定这对于阻止UI的效果如何,但是认为因为它在ASP.Net中的单独线程中运行,所以效果不会太差。< / p>