Я пишу 2 приложения WPF .Net Framework и готов к использованию различные proto, клиенты и реализации.
Проблема: приложение 1 отправляет первый запрос (процедура запуска для приложения 2).Приложение 2 получает, обрабатывает, создает объект для возврата, возвращает его.Приложение 3 выдает Grpc.Core.RpcException: {"Status (StatusCode = Cancelled, Detail = \" Canceled \ ")"}
Я получил желаемый результат, не установил таймаут и не дал отменыТокен даже будет вызываться.
Мой канал настроен следующим образом, с 127.0.0.1 и 50052 в качестве IP и порта._channel = новый канал ($ "{MyIP}: {MyPort}, ChannelCredentials.Insecure);
Мой сервер настраивается путем его обновления, итеративного добавления служб и добавления порта в виде:
_server.Ports.Add(new ServerPort({MyIP}, {MyPort},
ServerCredentials.Insecure));
прототипы были скомпилированы с использованием методов автоматической компиляции grpc с `syntax =" proto3 ". Я добавлю фрагмент ниже.
service Hardware
{
// A Simple RPC.
//
// Request for the hardware to initialise.
//
// Returns the state in an enum.
rpc Initialise(StateChangeRequest) returns (State) {}
}
// Requests the change, with context coming from the command being sent.
message StateChangeRequest
{
}
// Returns the state enum, showing the different states of the hardware.
message State
{
enum Status {
UNKNOWN = 0;
INITIALISED = 1;
INITFAILED = 2;
}
Status status = 1;
}
Вызов выполняется следующим образом:
public async Task<bool> Initialise()
{
try
{
// Initialise hardware via client.
if (await _client.InitialiseAsync() != State.Types.Status.Initialised)
{
return false;
}
}
catch (Exception ex)
{
_logger.Error(ex);
return false;
}
return true;
}
Может помочь любая дополнительная информация, которую я могу придумать: Target Framework - это .NET Framework 4.6.2. Используемая версия Google Protobuf - 3.9.1.0. Используемая версия Grpc Core - 2.0.0.0.Используемая версия Grpc Core Api - 2.0.0.0. Эти версии идентичны во всех используемых проектах.
Любая помощь очень ценится.