微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 .Net Core 中使用 Grpc 检索流结果?

如何解决如何在 .Net Core 中使用 Grpc 检索流结果?

我正在使用 gRPC 构建一个 .NetCore 应用程序。

我在构建处理流结果的代码时遇到问题。

考虑以下 protobuf 定义:

service SampleService
{
    rpc RegisterClient(G_ClientRequest) returns (stream G_ClientResponse) { }
}

这是从流中读取结果的代码片段:

public ConnectToClient()
{
    var results = Client.RegisterClient(new G_ClientRequest() 
    { 
        ClientName = "Foo",DateTimeStamp = new Google.Protobuf.WellKNownTypes.Timestamp()
    });
    
    var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
    foreach (var result in results.ResponseStream.ReadAllAsync(cancellationToken: cts.Token))
    {

    }   
}

我一直在谷歌上搜索并找到了类似于我上面处理流结果的代码的东西。但是代码不能编译。 ReadAllAsync()IAsyncStreamReader 的接口定义中不可用。

功能在 .Net Core 中不可用/不支持吗?我使用的是最新的稳定版 Grpc (2.38)。

如果这对我不可用,我如何从 .Net Core 中的 ResponseStream 检索结果?

谢谢,约翰 B

解决方法

根据 gRPC 文档,接口 IAsyncStreamReader 没有 ReadAllAsync() 方法。

https://grpc.github.io/grpc/csharp/api/Grpc.Core.IAsyncStreamReader-1.html

,

ReadAllAsync 是包含在 Grpc.Core 中的扩展,如果你已经安装了 Nuget 包 Grpc.Net.Client 只需添加:

using Grpc.Core;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。