我正在尝试在ASP.NET Web API的ApiController上收到POST,并将其添加到Azure队列。
我遇到的问题是,我现在不想在类的属性上进行参数绑定,而是在Azure队列中将JSON作为字符串排队,以便我可以在其中获得工作人员角色来处理它自己的时间。

我正在使用Fiddler进行POST,如下所示:

User-Agent: Fiddler
Host: localhost:50348
Content-Type: application/json
Content-Length: 34


使用此请求正文:

{"text":"pineapple","user":"fred"}


这是我的控制器(为清楚起见,略有简化):

public class MessagesController : ApiController
{
    // POST api/messages
    public void Post([FromBody] Message message)
    {
        var storage = CloudStorageAccount.DevelopmentStorageAccount;
        var queueClient = storage.CreateCloudQueueClient();
        var queue = queueClient.GetQueueReference("messages");
        if (queue.CreateIfNotExists())
        {
            Trace.WriteLine("Hello world for the first time");
        }

        var msg = new CloudQueueMessage(message.text);
        queue.AddMessage(msg);
    }


这与Message类一起使用,如下所示:

public class Message
{
    public string user { get; set; }
    public string text { get; set; }
}


一切都很好,但是我只想获取请求主体(即JSON)而不绑定它,而是将整个内容作为字符串添加到Azure队列中。

有任何想法吗?我是否缺少某些东西,或者我的方法是错误的?

最佳答案

您可以简单地使用Json.Net序列化对象,方法是:

var serializedData = JsonConvert.SerializeObject(message);
var msg = new CloudQueueMessage(serializedData);
queue.AddMessage(msg);

10-07 18:15