Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous net内核中的异步流下载_Asynchronous_Asp.net Core - Fatal编程技术网

Asynchronous net内核中的异步流下载

Asynchronous net内核中的异步流下载,asynchronous,asp.net-core,Asynchronous,Asp.net Core,我在这里遇到一个问题,需要你的帮助 我有一个.NETWebAPI项目,使用PushStream进行异步下载,比如 new PushStreamContent(async (outputStream, httpContent, transportContext))=>{} 这样,我可以在动作中下载多个部分 但是,现在我想将项目转移到.net core中,但在.net core中找不到pushstream的替代品 您能告诉我在.NETCore中是否有类似于pushstream的东西或任何实现

我在这里遇到一个问题,需要你的帮助

我有一个.NETWebAPI项目,使用PushStream进行异步下载,比如

new PushStreamContent(async (outputStream, httpContent, transportContext))=>{}
这样,我可以在动作中下载多个部分

但是,现在我想将项目转移到.net core中,但在.net core中找不到pushstream的替代品

您能告诉我在.NETCore中是否有类似于pushstream的东西或任何实现它的方法吗


非常感谢。

PushStreamContent
的工作原理是在处理输出流时设置要调用的回调。这在ASP.NET Web Api中是必需的,因为无法直接访问
OutputStream

但是,在ASP.NET内核中,您确实可以通过
HttpContext.Response.Body
直接访问输出流。因此,您可以直接写入该流,而不需要像
PushStreamContent
这样的东西


FWIW,虽然这可以节省一些服务器资源,但实际上非常糟糕,特别是对于API之类的东西。由于您直接写入输出流,因此已经发送了头,包括响应状态代码。这意味着,如果在编写过程中出现任何异常,就没有机会适当地处理它。响应被简单地中止,客户机将挂起一个假定的“成功”响应,并且只有一部分主体。就我个人而言,我会说完全避免这种做法,并承担资源损失。除非您正在流式传输数据,否则任何好的服务器设置都会有大量的RAM来处理您正在做的事情。即使这样,也可能有更好的方法来处理这些数据的传递。

非常感谢您的解释,事实上,我从这个博客中获得了一些信息,与您的观点相同,再次感谢。@ChrisPratt您能提供一个在.NET Core中使用的示例吗?