Я создал сервер Do tNet Core 3.1 gRP C.
Возможно ли использовать этот сервер в клиенте Do tNet Frametwork 4.8?
I ссылались на эти пакеты:
- Google.Protobuf
- Grp c .Core
- Grp c .Core.Api
Мой тестовый код выглядит следующим образом:
using Grpc.Core;
using System;
using System.Windows.Forms;
namespace DotNetgRpcTest.ClientWinformC
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Channel channel = new Channel("127.0.0.1:50051", ChannelCredentials.Insecure);
var client = new Greeter.GreeterClient(channel);
String user = "John";
var reply = client.SayHello(new HelloRequest { Name = user });
Console.WriteLine("Greeting: " + reply.Message);
}
}
}
Я скопировал greet.proto с сервера ...
Но он не может найти Greeter в приведенном выше коде.
Это вообще возможно сделать?
ОБНОВЛЕНИЕ .......
Мне удалось поместить Protos в библиотеку. Net Standard 2.0 с такими нюгетами:
- Grp c
- Grp c .Core
- Grp c .Tools
Следующая проблема ...
Когда я запускаю приложения, мое. Net Frmawork 4.8 приложение выдает мне эту ошибку:
Grpc.Core.RpcException: 'Status(StatusCode=Unavailable, Detail="failed to connect to all addresses")'
Из гугла я узнал, что этот код на сервере это исправит ...
webBuilder.ConfigureKestrel(options =>
{
// This endpoint will use HTTP/2 and HTTPS on port 5001.
options.Listen(IPAddress.Any, 5001, listenOptions =>
{
listenOptions.Protocols = HttpProtocols.Http2;
});
});
Ну, сделал - теперь мое. Net Framework 4.8 приложение работает .... но теперь мое. Net Базовое клиентское приложение выдает мне эту ошибку:
Grpc.Core.RpcException: 'Status(StatusCode=Internal, Detail="Error starting gRPC call: The SSL connection could not be established, see inner exception.")'