托管在 Azure 上的 Web API 在获取请求后没有 return 本地数据

Web API hosted on Azure doesn't return On-Premise Data after Get Request

  1. 我创建了一个 ASP.NET Core Web API 并将其作为应用服务部署在 Azure 中。
  2. 我创建了一个混合连接并在本地数据库服务器上安装了混合连接管理器,将混合连接状态设置为已连接(已成功将应用服务连接到本地数据库服务器)。
  3. 在网络浏览器或 Postman 上发送获取请求或访问网络时API

我收到的结果是:

500 - The request timed out. The web server failed to respond within the specified time.

在我的本地机器上开发 Web API 时,它工作顺利,我可以通过 VPN 连接到内部部署。 我也加了这段代码

services.AddDbContext<RepositoryContext>(o => o.UseSqlServer(connectionString, sqlServerOptionsAction: sqlOptions =>
{
  sqlOptions.EnableRetryOnFailure(
     maxRetryCount: 5,
     maxRetryDelay: TimeSpan.FromSeconds(60),
     errorNumbersToAdd: null);
}));

在没有更多信息的情况下,500 错误,我猜最有可能的原因是连接到 On-Premise sql 服务器时出现问题。

疑难解答:

  1. 单击诊断并解决问题以查看应用程序事件日志以查看具体日志。

  2. (可选)打开应用程序日志记录(文件系统)和详细错误消息。

    Specifically, you can log in to the scm website to view the error log.

  3. 如果你测试接口,本地连接数据库或者使用vpn,肯定是没有问题的。现在问题一定是数据库连接部分。建议重新检查Hybrid connections。您也可以在门户网站上提出支持票,让他们检查日志并帮助您。

相关帖子:

1. Hybrid Connection Shows “Connected”, but Application Fails to Connect

2. Azure Web App Hybrid Connection Failing

问题

我在 Azure 中创建的混合连接 Endpoint/Host 与 SQL 服务器的名称不同。我随机命名了端点,而不是给它实际的 name/IP 地址。

附加信息

即使您在服务器上安装了 Connection Manager 并且 Status 设置为 Connected,这并不意味着您的应用服务将与数据库通信。

解决方案

创建一个新的混合连接并使用实际的 name/IP 地址设置端点主机名,混合连接管理器安装在该地址。