Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将.NET Core webapp项目从.NET Core 2.2迁移到3.1后,它无法与Azure中基于VM的远程应用建立套接字连接_C#_Asp.net Core_Tcpclient_Azure Web App Service_Vnet - Fatal编程技术网

C# 将.NET Core webapp项目从.NET Core 2.2迁移到3.1后,它无法与Azure中基于VM的远程应用建立套接字连接

C# 将.NET Core webapp项目从.NET Core 2.2迁移到3.1后,它无法与Azure中基于VM的远程应用建立套接字连接,c#,asp.net-core,tcpclient,azure-web-app-service,vnet,C#,Asp.net Core,Tcpclient,Azure Web App Service,Vnet,我们有一个部署为Azure应用程序服务的.NET Core web应用程序,我们最近将其从.NET Core 2.2迁移到.NET Core 3.1。应用程序通过与VNet集成连接的专用IP,对托管在Azure VM上的专用服务进行远程API调用。应用程序代码网络层没有任何更改,我们已验证所有防火墙规则都设置为允许来自应用程序服务的流量。基于.NET Core 2.2的部署插槽使用相同的API服务和相同的VNet连接到相同的VM(通过专用IP),没有问题。当我们重新配置防火墙规则和VM以接受通过

我们有一个部署为Azure应用程序服务的.NET Core web应用程序,我们最近将其从.NET Core 2.2迁移到.NET Core 3.1。应用程序通过与VNet集成连接的专用IP,对托管在Azure VM上的专用服务进行远程API调用。应用程序代码网络层没有任何更改,我们已验证所有防火墙规则都设置为允许来自应用程序服务的流量。基于.NET Core 2.2的部署插槽使用相同的API服务和相同的VNet连接到相同的VM(通过专用IP),没有问题。当我们重新配置防火墙规则和VM以接受通过面向internet的公共IP地址的连接时,基于.NET Core 3.1的插槽也可以连接(出于安全原因,这种配置是不可取的)。但是,基于.NET Core 3.1的部署在通过专用IP连接时会收到以下异常:

---> 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 ---```
-->System.AggregateException:发生了一个或多个错误。(发生了一个或多个错误。(试图以访问权限所禁止的方式访问套接字。[::ffff:10.10.4.4]:721))
--->System.AggregateException:发生一个或多个错误。(试图以访问权限所禁止的方式访问套接字。[::ffff:10.10.4.4]:721)
--->System.Net.Internals.SocketExceptionFactory+ExtendedSocketException(10013):试图以访问权限所禁止的方式访问套接字。[::ffff:10.10.4.4]:721
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw(异常源)
位于System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
位于System.Net.Sockets.TcpClient.EndConnect(IAsyncResult asyncResult)
在System.Net.Sockets.TcpClient.c.b_uu27_u1(IAsyncResult asyncResult)
在System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar、Func`2 endFunction、Action`1 endAction、Task`1 Promission、Boolean requiresSynchronization)
---内部异常堆栈跟踪的结束---```

Microsoft支持部门建议通过强制TcpClient通过其可选构造函数的参数使用IPv4来解决此问题:TcpClient TcpClient=new TcpClient(AddressFamily.InterNetwork)