Похоже, у вашего SiteRole
класса срок жизни больше, чем у введенного IUserService
. Вы должны проверить, действительно ли это источник проблем, и настроить время жизни зарегистрированных сервисов с помощью API-интерфейса контейнера DI. Вот несколько ссылок для различных контейнеров: Autofac , NInject , Unity , Простой инжектор .
И, возможно, немного измените тип SiteRole
& mdash; используйте свойство, чтобы получить в живых UserService
вместо поля, с помощью которого создается единственный экземпляр во время SiteRole
создания экземпляра.
public SiteRole()
{
// this field should be removed
// _userService = DependencyResolver.Current.GetService<IUserService>();
}
// this property should be used instead of field
private IUserService UserService
{
get { DependencyResolver.Current.GetService<IUserService>(); }
}
Или в современном синтаксисе
private IUserService UserService => DependencyResolver.Current.GetService<IUserService>();
Но будьте осторожны и убедитесь, что вы не получите неконтролируемое количество созданных UserService
экземпляров, если оно, например, настроено как экземпляр на вызов в вашем контейнере DI.