【问题标题】:Bad Request Check `Errors` for a list of errors returned by the API. at SendGrid错误请求检查“错误”以获取 API 返回的错误列表。在 SendGrid
【发布时间】:2015-03-05 13:25:37
【问题描述】:

我在创建用户后使用发送网格发送电子邮件,我正在关注本教程在这里 http://www.asp.net/identity/overview/features-api/account-confirmation-and-password-recovery-with-aspnet-identity 我什至下载了本教程并按原样编写代码

但它在此代码中断

string code = manager.GenerateEmailConfirmationToken(uApp.Id);
string callbackUrl = IdentityHelper.GetUserConfirmationRedirectUrl(code, uApp.Id, Request);
 manager.SendEmail(uApp.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>.");

这是第三个喜欢

manager.SendEmail(uApp.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>.");

代码中断的地方

错误是这样的

Exceptions.InvalidApiRequestException: 错误请求检查 Errors for API 返回的错误列表。在 SendGrid.Web.d__c.MoveNext() -- 从先前抛出异常的位置结束堆栈跟踪 --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.GetResult() 在 SendGrid.Web.d__0.MoveNext() --- 上一个堆栈跟踪结束 抛出异常的位置---在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.GetResult() 在 GCRweb.EmailService.d__0.MoveNext()

和bla bla bla 在此之前,它在第一行给我一个错误 abot 一些令牌和东西 我做错了什么

【问题讨论】:

  • 调试时可以看到Error-list..
  • 我这样做了,但没有多大帮助
  • 你能证明更多的代码吗?我认为您缺少 SendMail() 中的代码
  • sendMail 是一个内置函数

标签: c# asp.net sendgrid


【解决方案1】:

InvalidApiRequestException 异常是关键。

使用 DeliverAsync() 方法处理错误的最佳方法是这样的:

            try
            {
                await transportWeb.DeliverAsync(mensaje);
            }
            catch (InvalidApiRequestException ex)
            {
                var detalle = new StringBuilder();

                detalle.Append("ResponseStatusCode: " + ex.ResponseStatusCode + ".   ");
                for (int i = 0; i < ex.Errors.Count(); i++)
                {
                    detalle.Append(" -- Error #" + i.ToString() + " : " + ex.Errors[i]);
                }

                throw new ApplicationException(detalle.ToString(), ex);
            }

【讨论】:

    【解决方案2】:

    我试过了,但我认为你能做的最好的就是为此创建自己的函数这是一个合适的解决方案

    public static bool ForgotPassword(string fromAccount, string toAccount, string subject, string msg)
        {
            var ConfirmationMail = new MailMessage();
            if (IsLiveMode)
            {
                ConfirmationMail = new MailMessage("abc@abc.com", toAccount, subject, msg);
            }
            else
            {
                ConfirmationMail = new MailMessage("abc@abc.com", toAccount, subject, msg);
                           }
             ConfirmationMail.Priority = MailPriority.High;
            ConfirmationMail.IsBodyHtml = true;
            SmtpClient objSMTPClient = new SmtpClient();
            try
            {
                objSMTPClient.Send(ConfirmationMail);
                return true;
            }
            catch
            {
                return false;
            }
        }
    

    这是配置文件

    <system.net>
    <mailSettings>    
      <smtp from="no-reply@no-reply.com">
        <network host="smtp.live.com" password="abcdefghijk" port="587" userName="atteeqKhawaja@msn.com" enableSsl="true" />
      </smtp>     
    </mailSettings>
    

    现在最终的代码是这样的

    string code = manager.GeneratePasswordResetToken(user.Id);
                string callbackUrl = IdentityHelper.GetResetPasswordRedirectUrl(code, Request);
    
                bool emailSent = ForgotPassword(" khawaja Atteeq", Email.Text, "Reset Password", "Please reset your password by clicking <a href=\"" + callbackUrl + "\">here</a>.");
    

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,请检查 Web.config。原始教程曾说过使用 value="[Sendgridname]",删除 [ ] 后它应该可以正常工作。见下文。

      <appSettings>
          <add key="emailServiceUserName" value="SendGridUserName" />
          <add key="emailServicePassword" value="SendGridPassword" />
        </appSettings>
      

      【讨论】:

      • 到底发生了什么事
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      相关资源
      最近更新 更多