在ASP.NET Core中處理異步流的方法與處理同步流類似,可以使用IActionResult
接口中的WriteAsync
方法來寫入數據流。下面是一個處理異步流的示例代碼:
public async Task<IActionResult> GetStream()
{
var stream = GetMyStream(); // 獲取異步流
// 設置響應頭
Response.Headers.Add("Content-Disposition", "attachment; filename=file.txt");
// 寫入流
Response.Headers.Add("Content-Type", "application/octet-stream");
await stream.CopyToAsync(Response.Body);
await Response.Body.FlushAsync();
return Ok();
}
在上面的代碼中,GetMyStream
方法用于獲取異步流,然后使用CopyToAsync
方法將流寫入響應的Body
中。最后調用FlushAsync
方法刷新流,并返回Ok
響應。
另外,還可以使用StreamContent
類來包裝異步流,并通過Content
屬性將其傳遞給ObjectResult
或ActionResult
。以下是一個示例代碼:
public IActionResult GetStream()
{
var stream = GetMyStream(); // 獲取異步流
var streamContent = new StreamContent(stream);
streamContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
streamContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "file.txt"
};
return new ObjectResult(streamContent);
}
使用StreamContent
類可以更靈活地處理異步流,并將其作為響應的內容返回。