#c# #azure #grpc-web #azure-hybrid-connections
#c# #azure #grpc-web #azure-hybrid-connections
Вопрос:
Я пытаюсь запустить приложение blazor в веб-приложении в Azure, но база данных находится в локальном домене. Поэтому гибридное соединение Azure — хорошая идея для подключения к локальному домену. Из-за некоторых ограничений мы не можем напрямую ссылаться на базу данных и решили создать api в локальном домене, чтобы сделать это за нас. Связь между веб-приложением azure и локальным api осуществляется через grpc-web. Пока он работает с моего локального компьютера на сервер, на котором запущен api в IIS, вызов api из azure приводит к следующей ошибке:
Исключение Grpc.Core.RpcException: Status(StatusCode=»Internal», Detail=»Ошибка при запуске вызова gRPC. HttpRequestException: была предпринята попытка получить доступ к сокету способом, запрещенным его правами доступа. (:443) SocketException: была предпринята попытка получить доступ к сокету способом, запрещенным его правами доступа.»)
Теперь мой вопрос: могу ли я выполнить вызов grpc-web через гибридное соединение? Читая о гибридных соединениях, я обнаружил, что он должен поддерживать связь между вызовами grpc.
В диспетчере гибридных подключений указано, что соединение доступно и подключено. Я также могу подключиться к компьютеру, на котором запущен API из azure.
заранее благодарю вас.
Комментарии:
1. Порт 443 является защищенным портом. Возможно, у вас проблема с TLS. Я бы использовал сниффер, такой как wireshark или fiddler, и сравнил версию TLS с рабочей и нерабочей. Если вы не можете использовать сниффер в IIS, тогда используйте компьютер в той же подсети с установленным сниффером.
2. для целей тестирования я изменил servercertificatecustomvalidationcallback, чтобы всегда возвращать true . может ли быть так, что, хотя я установил это, сертификат все еще может быть проблемой?
3. Я не думаю, что это отключает проверку при использовании стандартной проверки . Будет работать только при использовании пользовательской проверки. См . : learn.microsoft.com/en-us/dotnet/api /…
4. оке, я отключил httpsredirecting и удалил привязки https в iis, однако я все еще получаю эти ошибки, только он показывает порт nog 80 вместо порта 443. Я думаю, что это комбинация гибридного соединения grpc-web и azure, потому что вызовы rest работают без каких-либо проблем на обычном http
5. Похоже, сервер работает как с http (80), так и с https (443). Вы просто не получили правильную версию TLS (или режим шифрования) для использования https. Таким образом, ваше ядро или ядро более низкого уровня могут не поддерживать TLS 1.2 / 1.3 или вы все еще используете TLS 1.0 / 1.1, который больше не поддерживается.