Я вызываю службу WCF в своем проекте веб-API и пытаюсь правильно ее зарегистрировать. В какой-то момент это работало, но я подозреваю, что обновление nuget изменило ситуацию. Теперь при проверке я получаю ошибку «Устранимый временный компонент», хотя в качестве типа регистрации я выбрал Lifestyle.Scoped.
Дополнительно в этом посте я проверил версии, и все они на одной версии. Переходный компонент зарегистрирован как переходный, но реализует однозначный
<package id="SimpleInjector" version="4.6.0" targetFramework="net472" />
<package id="SimpleInjector.Integration.WebApi" version="4.6.0" targetFramework="net472" />
<package id="SimpleInjector.Integration.WebApi.WebHost.QuickStart" version="4.6.0" targetFramework="net472" />
Вот мой код:
public static void Initialize()
{
var container = new Container();
// Lifestyle set as per recommended for API:
// https://simpleinjector.readthedocs.io/en/latest/lifetimes.html#asyncscoped-vs-webrequest
container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle();
container.Options.UseFullyQualifiedTypeNames = true;
InitializeContainer(container);
container.RegisterWebApiControllers(GlobalConfiguration.Configuration);
container.Verify();
GlobalConfiguration.Configuration.DependencyResolver =
new SimpleInjectorWebApiDependencyResolver(container);
}
private static void InitializeContainer(Container container)
{
// WCF
container.Register<IServices>(() => new ServiceClient("endpoint"), Lifestyle.Scoped);
}
Исключение:
Исключение: «SimpleInjector.DiagnosticVerificationException» в SimpleInjector.dll
Исключение типа SimpleInjector.DiagnosticVerificationException произошло в SimpleInjector.dll, но не было обработано в коде пользователя
Конфигурация неверна. Сообщалось о следующих диагностических предупреждениях:
- [Устранимый временный компонент] Контейнер зарегистрирован как временный, но реализует IDisposable.
См. Свойство Error для получения подробной информации о предупреждениях. См. https://simpleinjector.org/diagnostics, как исправить проблемы и как подавить отдельные предупреждения.
Кажется, что он игнорирует Lifestyle.Scoped. Какие-нибудь мысли?
Второе исключение:
Исключение: «SimpleInjector.DiagnosticVerificationException» в SimpleInjector.dll
Исключение типа SimpleInjector.DiagnosticVerificationException произошло в SimpleInjector.dll, но не было обработано в коде пользователя
Конфигурация неверна. Сообщалось о следующих диагностических предупреждениях:
- [Устранимый временный компонент] Контейнер зарегистрирован как временный, но реализует IDisposable.
См. Свойство Error для получения подробной информации о предупреждениях. См. https://simpleinjector.org/diagnostics, как исправить проблемы и как подавить отдельные предупреждения.