#c# #grpc
Вопрос:
Это моя установка:
- A: Стандартная версия .Net=2.0 (клиентская библиотека gRPC)
- B: Версия .Net Framework=4.8 (веб — приложение- использует клиентскую библиотеку)
- C: Версия .Net Core=3.1 (приложение WPF — использует клиентскую библиотеку)
- D: Версия .Net Core=3.1 (сервер gRPC, мое собственное творение)
- E: Версия .Net Core=3 или 5 — я не уверен. (Сервер gRPC, производство)
Ошибка = «Протокол HTTP/2 по протоколу TLS не был согласован на конечной точке, доступной только для HTTP/2».
Так… Кто-то другой реализовал этот сервер Grpc (E). Я могу позвонить этому с обоими приложениями. Никаких ошибок.
Но чтобы получить хорошую среду разработки для разработки двух приложений, я получил прото-файл с рабочего сервера и разработал свою собственную реализацию (D). Я использую это для тестирования обработки ошибок в клиентах — я могу контролировать, какие ответы дает сервер.
Я реализовал два совершенно одинаковых модульных теста, которые на самом деле являются интеграционными тестами. Один в проекте .net framework и один в проекте .net core.
И это работает для тестирования .net core, но не для .net framework.
Однако, если я введу a WinHttpHandler
вместо HttpClientHandler
, то это сработает. Я действительно не хочу вводить обработчик (это даже не интерфейс).
Также работает производственный сервер gRPC, как упоминалось ранее. Но я не знаю, почему мой выходит из строя, а производственный сервер gRPC работает.
Я думаю, что каким-то образом моя собственная реализация службы gRPC неверна (или отсутствует), но я не знаю, чего мне не хватает.
Пожалуйста, помогите!