asp.net-mvc-4 – Web API 2返回OK响应,但在后台继续处理
发布时间:2020-12-16 06:33:39 所属栏目:asp.Net 来源:网络整理
导读:我已经为shopify创建了一个mvc web api 2 webhook: public class ShopifyController : ApiController{ // PUT: api/Afilliate/SaveOrder [ResponseType(typeof(string))] public IHttpActionResult WebHook(ShopifyOrder order) { // need to return 202 re
我已经为shopify创建了一个mvc web api 2 webhook:
public class ShopifyController : ApiController { // PUT: api/Afilliate/SaveOrder [ResponseType(typeof(string))] public IHttpActionResult WebHook(ShopifyOrder order) { // need to return 202 response otherwise webhook is deleted return Ok(ProcessOrder(order)); } } ProcessOrder遍历订单并将详细信息保存到内部数据库. 但是,如果进程花费的时间太长,那么webhook会再次调用api,因为它认为它已经失败了.有没有办法先退回ok响应,然后再进行处理? 有点像在mvc控制器中返回重定向并且可以选择在重定向后继续处理其余操作. 请注意,我总是需要以Shopify的形式返回ok响应,如果它失败了19次,那么智慧决定删除webhook(并且处理时间过长会被视为失败) 解决方法
我设法通过使用Task异步运行处理来解决我的问题:
// PUT: api/Afilliate/SaveOrder public IHttpActionResult WebHook(ShopifyOrder order) { // this should process the order asynchronously var tasks = new[] { Task.Run(() => ProcessOrder(order)) }; // without the await here,this should be hit before the order processing is complete return Ok("ok"); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何在运行时设置ObjectDataSource选择参数
- asp.net-mvc – 我的剃刀视图的自定义基页类型,如何使用城堡
- 授权 – ASP.NET Web API基本身份验证授权标头
- asp.net – 获取当前请求的凭据以便在WebRequest中使用
- asp.net-core – ASP.NET 5中的Application_Start等价物
- asp.net – MVC 4数据注释“显示”属性
- asp.net – AngularJs ServiceStack应用程序的安全性
- asp.net-mvc – 在MVC Web应用程序中的存储库中共享DbConte
- AOP无法切入同类调用方法解决办法
- 为什么我的ASP.NET页面将前缀’ctl00_ctl00’添加到html元素