Я на самом деле написал конфигуратор Autofac EntLib (с некоторой помощью некоторых людей из P & P). Он был протестирован с блоком обработки исключений и блоком регистрации, но я не пробовал его с криптографическим материалом.
У EntLib есть интересная вещь, в которой иногда требуется именование зарегистрированных служб, и я предполагаю, из исключения, где говорится ...
type ISymmetricCryptoProvider, key "RijndaelManaged"
... Я думаю, что EntLib хочет, чтобы вы зарегистрировали именованный сервис, например:
builder.Register(c =>
{
// create the HashAlgorithmProvider using
// RijndaelManaged algorithm
})
.Named<ISymmetricCryptoProvider>("RijndaelManaged");
Я как бы догадываюсь о точной регистрации, так как, опять же, у меня нет опыта или тестирования, но идея в том, что EntLib пытается зарегистрировать с именем , в то время как фактическая услуга не регистрируется с именем .
Расширение RegisterEnterpriseLibrary
в основном проходит и пытается использовать тот же алгоритм, который использует Unity для выполнения именованных / неназванных регистраций. Я предполагаю, что вы столкнулись с крайним случаем, когда что-то не обрабатывается правильно. EntLib довольно хорошо привязан к Unity, даже если они пытались абстрагироваться от него.
Если вы не привязаны к Autofac, Unity станет вашим путем с самым низким трением вперед. Мне нравится простота использования и более легкий характер Autofac, и мои приложения привязаны к нему, поэтому мне нужно было все, чтобы работать таким образом; если у вас нет такой близости, может быть проще использовать Unity.
Извините, это не супер ответ. EntLib в IoC - действительно сложный зверь.