Nis*_*ddy 2 azure-sql-database
我在我的azure asp.net网站上使用SQL Azure.有一段时间,sql aerver连接没有打开,我看到这个异常消息(本地和现场):
连接超时已过期.在登录后阶段过去了超时时间.在等待服务器完成登录过程并响应时,连接可能已超时; 或者在尝试创建多个活动连接时可能会超时.
有人可以解释这些原因,并为此做出合适的解决方案吗?
正如Sharptooth在评论中指出的那样; 您将在SQL Azure上更频繁地获得瞬态错误.Microsoft提供了Transient Fault Handling Block,它可以解决常见的连接问题; 允许您定义检测策略并重试策略.
有关瞬态故障处理块的功能,请参阅此处,以及HERE,以获取有关如何将其添加到应用程序的指南(谢天谢地,您可以使用NuGet).
处理块主要像连接周围的try/catch块一样工作; DetectionStrategy如果错误与策略中指定的错误匹配,则使用a捕获常见连接错误然后重试连接.
我们使用LinqToSQL和工作区模式; 包裹我们连接的块看起来像这样:
private const int DELAYMILLISECONDS = 250;
private const int MAXRETRIES = 10;
public static ApplicationDatabaseDataContext Create(string connectionString)
{
var policy = new RetryPolicy<SqlAzureTransientErrorDetectionStrategy>(
MAXRETRIES,
TimeSpan.FromMilliseconds(DELAYMILLISECONDS));
var applicationDatabaseDataContext =
policy.ExecuteAction(() => GetDataContext(connectionString));
return applicationDatabaseDataContext;
}
Run Code Online (Sandbox Code Playgroud)
我们现在已经使用了一段时间,它为我们缓解了大部分问题.
| 归档时间: |
|
| 查看次数: |
5795 次 |
| 最近记录: |