Я наконец обнаружил, что я делаю не так.На самом деле я использую "Unity" (версия 5.8.6).Я сделал обновление своего пакета Unity одновременно с .NET Framework в прошлый раз.
Я сделал свой UnityConfig.cs следующим образом:
public static void ConfigureUnityContainer(IUnityContainer container)
{
// some other resgistration
container.RegisterType<MyEntities>(new PerResolveLifetimeManager());
}
Ошибка относится к типуменеджера.Правильным является PerRequestLifetimeManager
:
public static void ConfigureUnityContainer(IUnityContainer container)
{
// some other resgistration
container.RegisterType<MyEntities>(new PerRequestLifetimeManager());
}
Что я понял для PerRequestLifetimeManager
, так это то, что контейнер будет разрешать один и тот же экземпляр объекта вHTTP-запрос, в то время как PerResolveLifetimeManager
помечает тип, чтобы экземпляры повторно использовались в графе нарастающего объекта.
В итоге, с PerRequestLifetimeManager
, в разных http-запросах у нас будут разные разрешенные объекты.