Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
通过托管标识和专用端点从Azure WebApp访问Azure SQL_Azure_Azure Web App Service_Azure Sql Database_Azure Virtual Network - Fatal编程技术网

通过托管标识和专用端点从Azure WebApp访问Azure SQL

通过托管标识和专用端点从Azure WebApp访问Azure SQL,azure,azure-web-app-service,azure-sql-database,azure-virtual-network,Azure,Azure Web App Service,Azure Sql Database,Azure Virtual Network,我有一个在Linux Azure WebApp上托管的AspNetCore3.1应用程序。我已经在同一个服务器上启用了私有端点。一切都很有魅力。 现在要添加DB交互,我已经为web应用启用了系统分配的托管标识(MI),并将该用户添加到我的Azure SQL PaaS中。但是,我在DB连接时遇到错误: 由于拒绝公共网络访问设置为“是”,连接被拒绝 (). 要连接到此服务器,请从内部使用专用终结点 虚拟网络 (). 在 Microsoft.Data.ProviderBase.DbConnection

我有一个在Linux Azure WebApp上托管的AspNetCore3.1应用程序。我已经在同一个服务器上启用了私有端点。一切都很有魅力。 现在要添加DB交互,我已经为web应用启用了系统分配的托管标识(MI),并将该用户添加到我的Azure SQL PaaS中。但是,我在DB连接时遇到错误:

由于拒绝公共网络访问设置为“是”,连接被拒绝 (). 要连接到此服务器,请从内部使用专用终结点 虚拟网络 (). 在 Microsoft.Data.ProviderBase.DbConnectionPool.CheckPoolBlockingPeriod(异常 (e)

还为SQL DB配置了专用端点。这一个位于不同的子网中,但与webapp的专用端点所在的VNet相同

-更新:我已经验证,即使我从webApp中删除私有端点,仍然会引发错误


我在这里遗漏了什么?

错误消息表示您正试图从web应用程序通过公共网络访问SQL server。您需要在VNet中限制来自web应用的传出流量,然后您可以为SQL server使用专用端点。阅读

私有端点仅用于到Web应用的传入流。 传出流将不使用此私有端点,但您可以注入 传出流通过VNet流向不同子网中的网络 集成功能

在SQL server中添加专用终结点连接时,您将看到在为SQL server创建专用终结点的VNet中有Microsoft.SQL的服务端点和专用终结点

通过专用链接将Azure web应用访问到专用网络中的SQL server。您需要在同一VNet中的另一个空子网中启用。默认情况下,你的应用程序不会与Azure DNS专用区域一起工作。要使用Azure DNS专用区域,您需要添加以下应用程序设置:

WEBSITE_DNS_SERVER with value 168.63.129.16
WEBSITE_VNET_ROUTE_ALL with value 1
本机Windows应用中的测试结果 从web应用程序到SQL db,使用上述两种应用程序设置
WEBSITE\u DNS\u SERVER
WEBSITE\u VNET\u ROUTE\u ALL
条件,它解析为专用IP地址

通过使用私有DNS区域和不带
网站路径的应用程序设置
网站DNS\u服务器
和值
168.63.129.16
,从web应用程序到SQL db所有
已配置。它解析为公共IP地址


所有这些在Windows web应用程序上都能正常工作,但如果我选择Linux作为应用程序的主机,它甚至无法加载。Kudu控制台未返回任何结果。我尝试了名称解析程序,但没有找到。TCping未返回任何响应。是的,测试命令在linux web app中不起作用,但vnet集成会执行相同的操作。您可以在同一个vnet中部署windows测试vm以进行验证。您好,请注意,您不能在同一个应用程序服务计划中混合使用windows web应用程序和Linux web应用程序。如果您选择Linux托管您的应用程序,则需要在另一个服务计划中部署它,并将其应用程序集成到新的子网中。Windows和Linux应用程序(包括自定义容器)都完全支持区域vnet集成功能。Windows应用程序和Linux应用程序之间的所有行为都是相同的。有一个例外,
WEBSITE\u VNET\u ROUTE\u ALL
目前在Windows容器中不受支持。我尝试了两个新的应用服务计划和两个单独的子网来集成VNET,但结果不同。使用Windows WebApp的同一应用可以正常工作。另一个使用Linux web app的应用程序在vnet集成后甚至无法启动我的应用程序。当你说使用windows web app的同一应用程序可以正常工作时,另一个使用Linux web app的应用程序失败。您能否在VNet集成之前验证web应用程序是否可以启动或正常工作?这看起来像是web应用程序本身的问题。此外,当您通过Internet访问此web应用时,还应删除web应用UI上的私有端点(这将限制对web应用的公共访问)。