Я создал службу gRP C и клиент в C#. NET Core 3.1. Когда я развертываю сервис на localhost, я могу подключиться к нему без проблем. Но когда я публикую sh службу в IIS через WebDeploy и запускаю ее там, я не могу подключиться к ней.
Для локального развертывания канал инициализируется следующим образом:
var channel = GrpcChannel.ForAddress("https://localhost:5001");
Для удаленного развертывания я изменяю его на следующее значение, поскольку оно запускается как служба HTTP на http://localhost:5000
на удаленной машине (которую я также не смог выяснить, как изменить - я бы предпочел это для запуска в качестве службы HTTPS):
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
var channel = GrpcChannel.ForAddress("http://1.2.3.4:5000");
1.2.3.4
- это IP-адрес удаленного компьютера, который я могу пропинговать. Я также создал правило брандмауэра, разрешающее весь входящий трафик c на входящий порт 5000
.
. При первом удаленном вызове клиентское приложение завершается с сообщением об ошибке
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
Я не понимаю, какие меры я должен предпринять, чтобы создать соединение с удаленной службой. Все примеры кода gRP C, которые я нашел до сих пор, используют localhost
в качестве точки развертывания и не помогли мне выяснить причину root моей проблемы.
Любая помощь или указатели на то, что я должен пропустили ценится.