gpt4 book ai didi

c# - 如何在 C# ASP.NET Web API 2 中从 Azure 队列返回 HTTP 状态代码

转载 作者:太空宇宙 更新时间:2023-11-03 10:24:54 25 4
gpt4 key购买 nike

我有一个 Web API(在 ASP.NET Web API 2 上用 C# 编写)。其中一种方法采用 HTTP POST 并将其添加到 Azure 队列。

我想知道如何从 Azure 队列获取 http 状态代码(或任何可用的内容),以便我可以从我的方法返回适当的 http 状态代码。

到目前为止的代码与此类似:

[Route("api/v1/somewhere/")]
[ResponseType(typeof(Thingy))]
public async Task<IHttpActionResult> Post(Thingy thingy)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}

var storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["AzureWebJobsStorage"].ToString());
var queueClient = storageAccount.CreateCloudQueueClient();
var queue = queueClient.GetQueueReference("thingys");

var msg = new CloudQueueMessage(JsonConvert.SerializeObject(thingy));
await queue.AddMessageAsync(msg);

return Json(thingy);
}

我想更换 return Json(thingy);如果 await queue.AddMessageAsync(msg); 一切顺利,则返回 http 状态代码 202如果出现问题,还可以使用另一个适当的代码。

有什么想法吗?

最佳答案

您应该使用LastResult OperationContext的属性(property)目的。它有一个 HttpStatusCode属性将从存储服务返回状态代码。这是一个相同的示例:

    static void QueueTest1()
{
var account = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);
var queueClient = account.CreateCloudQueueClient();
var queue = queueClient.GetQueueReference("my-queue");
queue.CreateIfNotExists();
var messageContents = "This is a test message";
var opContext = new OperationContext();
var msg = new CloudQueueMessage(messageContents);
queue.AddMessage(msg, null, null, null, opContext);
var statusCode = opContext.LastResult.HttpStatusCode;
Console.WriteLine("Status Code = " + statusCode);//Prints 201 as status code
queue.DeleteIfExists();
}

关于c# - 如何在 C# ASP.NET Web API 2 中从 Azure 队列返回 HTTP 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31960235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com