public override Task <ProductGetResponse> Create(ProductCreateRequest request, ServerCallContext context) { if (store.ContainsKey(request.ProductId)) { return(Task.FromResult(default(ProductGetResponse))); } Channel channel = new Channel("127.0.0.1:50051", ChannelCredentials.Insecure); ClientCallInvoker callInvoker = new ClientCallInvoker(channel); var userClient = new UserService.UserServiceClient(callInvoker); var product = store[request.UserId]; product.ProductId = request.ProductId; product.ProductName = request.ProductName; product.User = userClient.Get(new UserGetRequest { UserId = request.UserId }); userClient.Update(new UserGetResponse { UserId = product.User.UserId, UserName = product.User.UserName, ProductCount = product.User.ProductCount + 1 }); //关闭 channel.ShutdownAsync().Wait(); return(Task.FromResult(product)); }