После переноса проекта. NET Core webapp с. net core 2.2 на 3.1 он не может установить sh сокетное соединение с удаленным приложением на основе виртуальной машины в Azure - PullRequest
2 голосов
/ 16 января 2020

У нас есть. NET Базовое веб-приложение, развернутое как Azure Служба приложений, из которого мы недавно мигрировали. NET Core 2.2 в. NET Core 3.1. Приложение выполняет удаленные вызовы API для частной службы, размещенной на виртуальной машине Azure, через частный IP-адрес, связанный с интеграцией VNet. Не было никаких изменений в сетевом уровне кода приложения, и мы убедились, что все правила брандмауэра настроены для разрешения трафика c из службы приложений. Слоты развертывания на основе. NET Core 2.2 подключаются к одной и той же виртуальной машине (по частному IP) с той же службой API и тем же VNet без проблем. Слот. NET Core 3.1 также может подключаться при переконфигурировании правил брандмауэра и виртуальной машины для приема подключений через общедоступный IP-адрес c, inte rnet (эта конфигурация нежелательна по соображениям безопасности). Однако при подключении по частному IP-адресу развертывание на основе. NET Core 3.1 получает следующее исключение:

---> System.AggregateException: One or more errors occurred. (One or more errors occurred. (An attempt was made to access a socket in a way forbidden by its access permissions. [::ffff:10.10.4.4]:721))
---> System.AggregateException: One or more errors occurred. (An attempt was made to access a socket in a way forbidden by its access permissions. [::ffff:10.10.4.4]:721)
---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (10013): An attempt was made to access a socket in a way forbidden by its access permissions. [::ffff:10.10.4.4]:721
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw(Exception source)
at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
at System.Net.Sockets.TcpClient.EndConnect(IAsyncResult asyncResult)
at System.Net.Sockets.TcpClient.<>c.<ConnectAsync>b__27_1(IAsyncResult asyncResult)
at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)
--- End of inner exception stack trace ---```
...