Asp.net web api 使用web api返回二进制数据
我有以下返回字节数组的控制器方法Asp.net web api 使用web api返回二进制数据,asp.net-web-api,asp.net-web-api2,Asp.net Web Api,Asp.net Web Api2,我有以下返回字节数组的控制器方法 public async Task<HttpResponseMessage> Get() { var model = new byte[] { 1, 2, 3 }; HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); result.Content = new StreamContent(new
public async Task<HttpResponseMessage> Get()
{
var model = new byte[] { 1, 2, 3 };
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new StreamContent(new MemoryStream(model));
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
return result;
}
公共异步任务Get()
{
var model=新字节[]{1,2,3};
HttpResponseMessage结果=新的HttpResponseMessage(HttpStatusCode.OK);
结果.内容=新的流内容(新的内存流(模型));
result.Content.Headers.ContentType=新的MediaTypeHeaderValue(“应用程序/八位字节流”);
返回结果;
}
我认为这是一种使用web api实现此功能的旧方法。有更“现代”的版本吗
例如,现在返回
任务
是首选方式吗?如果是这样的话,从上面返回字节数组的代码是什么?正如注释所指出的那样。我不认为有新的方法可以做到这一点。但是,如果您想返回IHttpActionResult
,则有一个基本方法返回ResponseMessageResult
:
public IHttpActionResult Get()
{
var model = new byte[] { 1, 2, 3 };
var result = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StreamContent(new MemoryStream(model))
};
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
return ResponseMessage(result);
}
此外,如果有人需要,要在AspNetCore WebApi2中返回二进制数据,请执行以下操作:
[Route("api/v1/export/excel")]
[HttpGet]
public IActionResult GetAsExcel()
{
var exportStream = new MemoryStream();
_exportService.ExportAllToExcel(exportStream);
// Rewind the stream before we send it.
exportStream.Position = 0;
return new FileStreamResult(exportStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
}
我不相信有任何新的方法来处理这个问题。Web API 2没有更改。我发现您的方法中没有
wait
,因此您应该避免将其设置为async
,只使用HttpResponseMessage
作为返回类型。