我们在Azure上托管了一个Web应用程序,应用程序服务在网络选项卡中连接了一个虚拟网络,禁用了路由所有数据。虚拟网络网关通过站点到站点连接连接到本地网络网关,连接工作正常,我们可以通过Web应用程序查询本地数据库。
到本地数据库的连接字符串:
Data Source=192.168.xxx.xxx\\Name;Initial Catalog=DBName;Persist Security Info=False;User ID=User;Password=Password;Trusted_Connection=False;Connection Timeout=120;
查询示例代码:
using (var dbConnection = new SqlConnection(AppSettings.DBConnection))
{
try
{
if (dbConnection.State != ConnectionState.Open)
await dbConnection.OpenAsync();
string query = "SELECT * FROM dbo.table";
using (var sqlDataAdapter = new SqlDataAdapter(query, dbConnection))
{
DataTable dt = new DataTable();
sqlDataAdapter.Fill(dt);
// Custom retrieval from dt
details.itemDetails = DBHelper.GetListOfObjects<ItemDetail>(dt);
details.otherDetails = DBHelper.GetListOfObjects<OtherDetail>(dt);
}
}
catch (Exception e)
{
throw new Exception($"Could not fetch Item Details{Environment.NewLine}{e.Message}");
}
}
几天后,我们收到内部数据库
的连接错误
修复连接的唯一方法是重新启动Azure App Service。我仍然能够从应用服务Kudu控制台查询数据库,但是应用服务在重新启动之前会出现此错误。我想它暂时失去连接,然后无法重新连接。
本地网络网关存在于美国中北部服务器上,而虚拟网络网关存在于美国西部服务器上,这是否是虚拟网络中断开连接的问题?
1条答案
按热度按时间mrfwxfqh1#
云端的网络不可靠。必须为瞬时故障实现重试逻辑的原因。下面是一个使用Polly的示例:
更多信息:
https://github.com/App-vNext/Polly