【发布时间】:2021-11-23 15:53:38
【问题描述】:
我需要使用 gRPC 将文件从 ASP.NET Core 流式传输到 Blazor WASM。
我想使用 net6 中添加的新类 DotNetStreamReference 以允许使用 JSInterop 直接流到磁盘(请参阅 https://docs.microsoft.com/en-us/aspnet/core/blazor/file-downloads?view=aspnetcore-6.0)。
现在,问题是:gRPC 方法流数据返回 IAsyncEnumerable<T>,但 DotNetStreamReference 类只接受 Stream 对象作为输入。
有办法将IAsyncEnumerable<byte[]> 转换为Stream 或最终从gRPC 调用返回Stream?
谢谢
【问题讨论】:
-
我认为没有修改 Grpc 代码的方法可以做到这一点,但您可能会幸运地使用自定义序列化器和反序列化器 github.com/grpc/grpc/blob/… 和自定义 grpc 方法处理程序的一些低级黑客。总体而言,这是仅限专家的领域,我建议不要这样做,因为性能改进不值得额外的复杂性(除非您之前进行过广泛的分析并且这是您应用程序的瓶颈)。跨度>
标签: c# blazor grpc filestream .net-6.0