我有一个用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更新到较旧的版本后,它又开始工作。但这不是我的解决方案。我想知道如何一劳永逸地解决此问题...