在ASP.NET Core 2中返回带201状态码的PDF文件
当然可以实现这个需求!在ASP.NET Core 2中,你只需要对FileContentResult做一点小调整就能同时返回PDF文件和201 Created状态码,具体做法如下:
解决方案:手动设置FileContentResult的状态码
FileContentResult默认会返回200 OK状态码,但它的StatusCode属性是可修改的,你可以直接创建实例并指定状态码:
public IActionResult YourAction() { // 假设document是你已获取到的PDF字节数组 byte[] document = GetYourPdfBytes(); var pdfResult = new FileContentResult(document, "application/pdf") { StatusCode = StatusCodes.Status201Created }; return pdfResult; }
或者更简洁的写法,利用ASP.NET Core的File方法后强转设置状态码:
return (FileContentResult)File(document, "application/pdf") { StatusCode = StatusCodes.Status201Created };
为什么这个方法可行?
FileContentResult继承自FileResult,而FileResult基类包含StatusCode属性,默认值是200 OK。通过手动将这个属性设置为StatusCodes.Status201Created,你就能让响应同时具备:
- 正确的
application/pdf内容类型 201 Created状态码- 原始的PDF字节流作为响应体(不会被序列化为base64 JSON)
这样就完美解决了你之前遇到的两个问题:既不用返回base64格式的JSON,也能拿到期望的201状态码。
内容的提问来源于stack exchange,提问作者Victor
相关产品推荐
相关产品推荐

