有时grpc通话只是挂起

时间:2019-01-24 17:48:20

标签: c# grpc

我有一个用C#编写的简单grpc服务。我在应用程序中使用了它,通常情况下一切正常,但有时服务调用只是挂起,仅此而已。客户端发送一个请求,但是服务器处理程序甚至没有被调用。电话挂了...

这是服务器端的代码:

public class Program
{
    static Server Server;
    const int Port = 50055;

    static void Main(string[] args)
    {
        StartEnviewServer();

        while (Console.ReadKey().Key != ConsoleKey.Q) { }

        StopEnviewServer();
    }

    static void StartEnviewServer()
    {
        SimpleGrpcService.SimpleGrpcServiceBase Service = new TestService();
        Server = new Server()
        {
            Services = { SimpleGrpcService.BindService(Service) },
            Ports = { new ServerPort("127.0.0.1", Port, ServerCredentials.Insecure),
                      new ServerPort("192.168.121.59", Port, ServerCredentials.Insecure),
                      new ServerPort("172.24.200.1", Port, ServerCredentials.Insecure)
            }
        };
        Server.Start();
    }

    static void StopEnviewServer()
    {
        Server.ShutdownAsync();
    }

}

class TestService : SimpleGrpcService.SimpleGrpcServiceBase
{
    public override Task<SimpleString> TestCall(SimpleString request, ServerCallContext context)
    {
        Console.WriteLine(request.Value);
        return Task.FromResult(new SimpleString());
    }
}

这是客户端代码:

static void Main(string[] args)
    {
        var z = "localhost:50055";
        TestServiceClient Service = new TestServiceClient(z);
        Service.TestCall(new SimpleString());
        Console.Read();
    }

所有操作均根据用户指南完成,并且所有操作都在一瞬间生效,但在一段时间后突然停止。 我最近找到了一种解决方法。当我将grpc库-Grpc.Core,Google.Protobuff和System.Interactive.Async更新到较旧的版本后,它又开始工作。但这不是我的解决方案。我想知道如何一劳永逸地解决此问题...

0 个答案:

没有答案
相关问题