Sharptooth가 그의 코멘트에 표시했습니다. SQL Azure에서 일시적 오류가 더 자주 발생합니다. Microsoft는 공통 연결 문제를 해결하는 Transient Fault Handling Block을 제공했습니다. 탐지 전략을 정의하고 정책을 재 시도 할 수 있습니다.
일시적 오류 처리 블록이 수행하는 작업에 대한 간략한 설명은 HERE을, 응용 프로그램에 추가하는 방법은 HERE을 참조하십시오 (고맙게도 NuGet을 사용할 수 있음).
처리 블록은 주로 연결 주변의 try/catch 블록처럼 작동합니다. DetectionStrategy
을 사용하여 공통 연결 오류를 포착 한 다음 오류가 전략에 언급 된 것과 일치하는 경우 연결을 재 시도합니다.
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;
}
그것은 우리를 위해 이러한 문제의 대부분을 완화 : 우리의 연결을 포장 블록은 다음과 같습니다.
연결 시도를 다시 시도하십시오. 이것이 Azure 용 일시적 오류 처리 응용 프로그램 블록이있는 이유입니다. – sharptooth
이것은 답변이어야합니다. – Craig