从EnterpriseLibraryContainer初始化RetryManager不起作用

use*_*129 6 c# enterprise-library azure

我使用此代码从Enterprise Library初始化RetryManager:

using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.WindowsAzure.TransientFaultHandling;
using Microsoft.Practices.EnterpriseLibrary.WindowsAzure.TransientFaultHandling.SqlAzure;
using Microsoft.Practices.TransientFaultHandling;

...

var manager = EnterpriseLibraryContainer.Current.GetInstance<RetryManager>();
return manager.GetDefaultSqlConnectionRetryPolicy();
Run Code Online (Sandbox Code Playgroud)

现在我将Enterprise Library NuGet包更新到最新版本,并且不再有EnterpriseLibraryContainer.

如何使用新的企业管理器初始化RetryManager?它必须是线程安全的,因为我的代码在Web服务器上执行.

use*_*129 4

我是这样解决的:

删除所有旧的 NuGet 包并仅安装这两个包:

<package id="EnterpriseLibrary.TransientFaultHandling" version="6.0.1304.0" targetFramework="net45" />
<package id="EnterpriseLibrary.TransientFaultHandling.Data" version="6.0.1304.0" targetFramework="net45" />
Run Code Online (Sandbox Code Playgroud)

在应用程序中添加此代码一次:

var strategy = new FixedInterval("fixed", 10, TimeSpan.FromSeconds(3));
var strategies = new List<RetryStrategy> {strategy};
var manager = new RetryManager(strategies, "fixed");
RetryManager.SetDefault(manager);
Run Code Online (Sandbox Code Playgroud)

然后使用微软的新连接类:

using (var connection = new ReliableSqlConnection(ConnectionString))
{
    connection.Open();
    ...
    command.ExecuteNonQueryWithRetry();
}
Run Code Online (Sandbox Code Playgroud)

我还从 Web.Config 中删除了所有配置,因为它现在在我的代码中。