使用Web API C Sharp的Sendgrid入站Web挂钩

时间:2017-06-29 18:10:32

标签: c# asp.net-web-api sendgrid

我正在尝试使用网络摘要解析来自发送网格的电子邮件,但只是出现以下错误...

  

“发生错误。”,“ExceptionMessage”:“解析数字时遇到意外字符:W。路径'',第1行,第6位。”,“ExceptionType”:“Newtonsoft.Json.JsonReaderException”,“ StackTrace“:”at Newtonsoft.Json.JsonTextReader.ReadNumberCharIntoBuffer(Char currentChar,Int32 charPos)\ r \ n在Newtonsoft.Json.JsonTextReader.ReadNumberIntoBuffer()\ r \ n在Newtonsoft.Json.JsonTextReader.ParseNumber(ReadType readType)\ r \ n at Newtonsoft.Json.JsonTextReader.ParseValue()\ r \ n at Newtonsoft.Json.JsonTextReader.Read()\ r \ n at Newtonsoft.Json.JsonReader.ReadForType(JsonContract contract,Boolean hasConverter)\ r \ n在Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader,Type objectType,Boolean checkAdditionalContent)\ r \ n at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader,Type objectType)\ r \ n在Newtonsoft.Json.JsonConvert。在Newtonso的DeserializeObject(字符串值,类型类型,JsonSerializerSettings设置)\ r \ n ft.Json.JsonConvert.DeserializeObject(字符串值,类型类型,JsonConverter []转换器)\ r \ n在Newtonsoft.Json.JsonConvert.DeserializeObject [T](字符串值,JsonConverter []转换器)\ r \ n在StrongGrid。 WebHookParser.ParseWebhookEvents(String requestBody)位于C:\ projects \ stronggrid \ Source \ StrongGrid \ WebhookParser.cs:第48行\ r \ n,位于C:\ Dev \ Baxter Personnel中的WebAPI_InboundMail.Controllers.HomeController.d__0.MoveNext() Projects \ Comms \ WebAPI_InboundMail \ WebAPI_InboundMail \ Controllers \ HomeController.cs:第23行\ r \ n ---从抛出异常的上一个位置开始的堆栈跟踪结束--- \ r \ n在System.Runtime.CompilerServices.TaskAwaiter中。 ThrowForNonSuccess(任务任务)\ r \ n在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\ r \ n在System.Threading.Tasks.TaskHelpersExtensions.d__3`1.MoveNext()\ r \ n ---从抛出异常的先前位置开始的堆栈跟踪结束--- \ r \ n在System.Runtime.CompilerServices.TaskAwaiter.ThrowF orNonSuccess(任务任务)\ r \ n在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\ r \ n在System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext()\ r \ n ---从抛出异常的先前位置开始的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\ r \ n处于System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中的\ r \ n \ r \ n在System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext()\ r \ n ---从抛出异常的上一个位置的堆栈跟踪结束--- \ r \ n在System.Runtime。 CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\ r \ n在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\ r \ n在System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()“} < / p>

这是我的代码,任何帮助都很棒...

    [HttpPost]
    public async Task<IHttpActionResult> Post()
    {
        var requestBody = await Request.Content.ReadAsStringAsync();
        var parser = new WebhookParser();
        var events = parser.ParseWebhookEvents(requestBody);

        bool status = true;
        var response = status == true? new HttpResponseMessage(HttpStatusCode.OK) : new HttpResponseMessage(HttpStatusCode.BadRequest);

        return Ok("");
    }

1 个答案:

答案 0 :(得分:0)

基于错误消息(Unexpected character encountered while parsing number),听起来好像StrongGrid库中的WebhookParser试图将给定值解析为数字,但SendGrid发送的Json中的值不是数字。

您能看一下requestBody变量的内容并检测导致问题的属性吗?如果您发布变量的内容,我会尝试提供帮助。