我有一个方法,它调用SQLServer函数对表执行自由文本搜索。该函数偶尔会在第一次调用时导致SQLException:“全文查询字符串的断字超时”。因此,通常我希望重试该请求,因为它将在后续请求中成功。什么是构建重试逻辑的好风格。目前我有以下几点:
var retryCount = 0;
var results = new List<UserSummaryDto>();
using (var ctx = new UsersDataContext(ConfigurationManager.ConnectionStrings[CONNECTION_STRING_KEY].ConnectionString))
{
for (; ; )
{
try
{
results = ctx.SearchPhoneList(value, maxRows)
.Select(user => user.ToDto())
.ToList();
break;
}
catch (SqlException)
{
retryCount++;
if (retryCount > MAX_RETRY) throw;
}
}
}
return results;发布于 2017-07-31 21:26:45
您可以简单地使用SqlConnectionStringBuilder属性来重试sql连接。
var conBuilder = new SqlConnectionStringBuilder("Server=.;Database=xxxx;Trusted_Connection=True;MultipleActiveResultSets=true"); conBuilder.ConnectTimeout = 90; conBuilder.ConnectRetryInterval = 15; conBuilder.ConnectRetryCount = 6;
注意:-需要.Net 4.5或更高版本。
https://stackoverflow.com/questions/4821668
复制相似问题