Ok, maybe I'm just not getting it but it seems like every line of code to access Sql Azure is a multi-day battle of asking for help on how to do something. Ok, so I try creating a connection using the following:
string connectionString = ConfigurationManager.ConnectionStrings["EnforcedVacation"].ConnectionString; return new ReliableSqlConnection(connectionString);
And I get the error:
System.InvalidOperationException occurred HResult=-2146233079 Message=The default RetryManager has not been set. Set it by invoking the RetryManager.SetDefault static method, or if you are using declarative configuration, you can invoke the RetryPolicyFactory.CreateDefault() method to automatically create the retry manager from the configuration file. Source=Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling StackTrace: at Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling.RetryManager.get_Instance() at Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling.ReliableSqlConnection..ctor(String connectionString) at UnitTestRepository.TestUtilities.GetConnection() in c:\src\EnforcedVacation\UnitTestRepository\TestUtilities.cs:line 44 InnerException:
So I then try (using random sample found on the web):
var retryInterval = TimeSpan.FromSeconds(3); var strategy = new FixedInterval("fixed", 4, retryInterval); var strategies = new List<RetryStrategy> { strategy }; var manager = new RetryManager(strategies, "fixed"); RetryManager.SetDefault(manager); string connectionString = ConfigurationManager.ConnectionStrings["EnforcedVacation"].ConnectionString; return new ReliableSqlConnection(connectionString);
and get:
System.InvalidOperationException occurred HResult=-2146233079 Message=The RetryManager is already set. Source=Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling StackTrace: at Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling.RetryManager.SetDefault(RetryManager retryManager, Boolean throwIfSet) at UnitTestRepository.TestUtilities.GetConnection() in c:\src\EnforcedVacation\UnitTestRepository\TestUtilities.cs:line 39 InnerException:
So apparently you must set the retry manager. But if you do, it's already set. What's the solution?
app.config is:
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="RetryPolicyConfiguration" type="Microsoft.Practices.EnterpriseLibrary.WindowsAzure.TransientFaultHandling.Configuration.RetryPolicyConfigurationSettings, Microsoft.Practices.EnterpriseLibrary.WindowsAzure.TransientFaultHandling, Version=5.0.1031.0, Culture=neutral, PublicKeyToken=null" requirePermission="true" /> <section name="typeRegistrationProvidersConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.TypeRegistrationProvidersConfigurationSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </configSections> <typeRegistrationProvidersConfiguration> <clear /> <add sectionName="RetryPolicyConfiguration" name="RetryPolicyConfiguration" /> </typeRegistrationProvidersConfiguration> <RetryPolicyConfiguration defaultRetryStrategy="Fixed Interval Retry Strategy" defaultSqlConnectionRetryStrategy="Backoff Retry Strategy" defaultSqlCommandRetryStrategy="Incremental Retry Strategy" defaultAzureStorageRetryStrategy="Fixed Interval Retry Strategy" defaultAzureServiceBusRetryStrategy="Fixed Interval Retry Strategy"> <incremental name="Incremental Retry Strategy" retryIncrement="00:00:01" retryInterval="00:00:01" maxRetryCount="10"/> <fixedInterval name="Fixed Interval Retry Strategy" retryInterval="00:00:01" maxRetryCount="10"/> <exponentialBackoff name="Backoff Retry Strategy" minBackoff="00:00:01" maxBackoff="00:00:30" deltaBackoff="00:00:10" maxRetryCount="10" fastFirstRetry="false"/> </RetryPolicyConfiguration> <appSettings> <add key="***" value="***"/> </appSettings> <connectionStrings> <add *** /> </connectionStrings> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/></startup> </configuration>??? - thanks - dave