如何在返回StatusCodeResult 202 Accepted响应时携带Location头?
如何返回202 Accepted并添加Location请求头
没问题,我来帮你解决这个问题!要在返回202 Accepted的同时带上Location请求头,分两种常见场景给你方案:
场景1:ASP.NET Core 项目(推荐方式)
在ASP.NET Core里,直接用框架提供的AcceptedResult就能一步到位,它会自动帮你设置202状态码和Location请求头:
// 示例:指向相对路径的资源URI return Accepted("/api/orders/123"); // 如果需要绝对URI也可以这样写 return Accepted(new Uri("https://yourdomain.com/api/orders/123"));
这个方法完全符合HTTP规范,Location头会被自动添加到响应中,同时状态码设置为202 Accepted。
场景2:传统ASP.NET MVC 项目(兼容你的现有代码)
如果是用传统ASP.NET MVC(也就是你当前用StatusCodeResult的场景),可以先手动给Response添加Location头,再返回状态码:
// 先添加Location请求头,指定后续可查询状态的资源地址 Response.Headers.Add("Location", "/api/orders/123"); // 再返回202 Accepted状态码 return new StatusCodeResult(HttpStatusCode.Accepted);
另外提一句,你原代码里的第二个参数this其实是多余的,在Controller中直接返回new StatusCodeResult(HttpStatusCode.Accepted)就可以正常工作啦。
小提示
按照HTTP标准,202 Accepted对应的Location头应该指向一个可以查询异步操作状态的资源,这样客户端后续就能通过这个URI来获取请求的处理进度或者最终结果哦。
内容的提问来源于stack exchange,提问作者Ankit Koushik
相关产品推荐
相关产品推荐

