繁体   English   中英

gRPC 服务器上的任务参数范围

[英]Task parameter scope on gRPC server

我有一个从客户端调用的 gRPC 服务器任务。 请求参数在任务范围内,我不知道如何检索它并在其他类中使用它。 在任务外打印“currentRequest”不返回任何内容。 非常感谢你的帮助。

public class LoggingImpl : Logging.LoggingBase
{
    private Server server;
    RequestInfo currentRequest;
    public ClientController controller;

    public override Task<LoggingResponse> LoggingMCM(RequestInfo request, ServerCallContext context)
    {
        currentRequest = request;
        Console.Log(currentRequest);
        return Task.FromResult(new LoggingResponse { Result = "this is a reply from Unity Server" });
    }

    public void GetRequestInfo()
    {
        Console.Log(currentRequest);
    }


    public void StartServer()
    {
        server = new Server
        {
            Services = { Logging.BindService(new LoggingImpl()) },
            Ports = { new ServerPort("127.0.0.1", 50010, ServerCredentials.Insecure) }

        };
        server.Start();
    }
}

我期望 currentRequest 可以在 Taks 范围之外使用。 如何在主线程和其他类上使用请求信息?

由于gRPC 服务注册为瞬态(至少如果它们以标准方式注册),将为每次 gRPC 服务调用创建类LogginImpl的新实例。

使请求静态化可能会导致您期望的行为,因为它不会在每次调用时重新实例化(第 4 行):

private static RequestInfo currentRequest;

请记住,如果您想从请求中记录一条(字符串)消息,您仍然必须从请求中提取消息(因为您在GetRequestInfo()方法中将整个对象传递给了控制台)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM