我在这里遇到了一个问题,需要你的帮助。
我有一个使用PushStream进行异步下载的.net web api项目,比如
new PushStreamContent(async (outputStream, httpContent, transportContext))=>{}
通过这种方式,我可以在动作中下载多个部分。
但是,现在我想将项目移动到.net核心,我无法在.net核心中找到pushstream的替代品。
请您告诉我有关于.net核心中的pushstream或实现它的任何方法吗?
非常感谢。
答案 0 :(得分:4)
PushStreamContent
基本上设置在处理输出流时调用的回调。这在ASP.NET Web Api中是必需的,因为无法直接访问OutputStream
。
但是,在ASP.NET Core中,您可以通过HttpContext.Response.Body
直接访问输出流。因此,您可以直接写入该流而无需PushStreamContent
。
FWIW,虽然这可以节省一些服务器资源,但实际上非常糟糕,尤其是像API这样的东西。由于您直接写入输出流,因此已发送标头,包括响应状态代码。这意味着如果在您写作时出现任何异常,则没有机会适当地处理它。响应被简单地中止,并且客户端被称为“成功”响应,只有部分正文。就个人而言,我会说完全避免这种做法,并采取资源打击。除非您正在流式传输数据,否则任何良好的服务器设置都将拥有大量的RAM来处理您正在执行的操作。即便如此,可能还有更好的方法来处理这些数据。