Asp.net web api 使用asp.net web api处理批处理sendgrid事件
我试图使用asp.net web api应用程序处理成批SendGrid事件,但由于SendGrid处理其发送的帖子的内容类型标题的方式,我遇到了一个绊脚石 从他们的: 批处理事件帖子的内容类型标题为application/json, 并且每行仅包含一个JSON字符串 代表一个事件。请注意,当前的帖子标题 将本文定义为application/json,尽管它不是;每一行都是一个 有效的JSON字符串,但整个帖子正文不是 因此,给定一个控制器:Asp.net web api 使用asp.net web api处理批处理sendgrid事件,asp.net-web-api,sendgrid,Asp.net Web Api,Sendgrid,我试图使用asp.net web api应用程序处理成批SendGrid事件,但由于SendGrid处理其发送的帖子的内容类型标题的方式,我遇到了一个绊脚石 从他们的: 批处理事件帖子的内容类型标题为application/json, 并且每行仅包含一个JSON字符串 代表一个事件。请注意,当前的帖子标题 将本文定义为application/json,尽管它不是;每一行都是一个 有效的JSON字符串,但整个帖子正文不是 因此,给定一个控制器: public class SendGridContr
public class SendGridController : ApiController
{
// POST api/values
public void Post([FromBody]string value)
{
// do something with value
}
}
像SendGrid那样向其发送帖子将导致“value”为null
string URI = "http://localhost:3018/api/sendgrid/";
string myParameters =
@"={""email"":""foo@bar.com"",""timestamp"":1322000095,""user_id"":""6"",""event"":""bounced""}
{""email"":""foo@bar.com"",""timestamp"":1322000096,""user_id"":""9"",""event"":""bounced""}";
using (var wc = new System.Net.WebClient())
{
wc.Headers[System.Net.HttpRequestHeader.ContentType] = "application/json"; // I work fine if "application/x-www-form-urlencoded" is used.
wc.UploadString(URI, myParameters);
}
如果我将客户端示例中的内容类型更改为“application/x-www-form-urlencoded”,则一切都会按预期进行
有没有一种简单的方法可以覆盖这个约定,这样我就可以处理sendgrid在我的控制器方法中作为字符串提供的格式错误的“json”?好的,我终于找到了答案。诀窍是删除“value”参数并直接处理请求对象 比如:
public class SendGridController : ApiController
{
// POST api/values
public void Post()
{
var value = Request.Content.ReadAsStringAsync().Result;
// do something with value
}
}
好吧,我终于明白了。诀窍是删除“value”参数并直接处理请求对象 比如:
public class SendGridController : ApiController
{
// POST api/values
public void Post()
{
var value = Request.Content.ReadAsStringAsync().Result;
// do something with value
}
}
这不是对你问题的回答,但如果你向community@sendgrid.com,我们可以将您添加到测试版以获取有效的JSON数据。这不是对您问题的回答,但如果您向community@sendgrid.com,我们可以将您添加到测试版以获取有效的JSON数据。