Я изучаю тему DI в ASP.NET 5, и я столкнулся с такой проблемой - я не понимаю, как создать новый экземпляр услуги за запрос.Область запроса с ASP.NET 5 и встроенный контейнер DI
Я использую код:
services.AddScoped<ValueStore>();
А внутри моего промежуточное программное хватаю значение:
var someValueStore = app.ApplicationServices.GetService<ValueStore>();
Полный код доступен here
И моя проблема: в то время как я ожидал услугу, которая будет обновляться по каждому запросу, ее не произойдет, и она ведет себя так, как если бы она была зарегистрирована как AddSingleton()
.
Я делаю что-то неправильно?
Что делать, если вы вводите 'ValueStore' в метод' Invoke' промежуточного программного обеспечения? 'app.ApplicationServices' может не содержать службы с запросом и возвращать экземпляр singleton вместо этого. –
У вас должен быть доступ к «HttpContext» в вашем промежуточном программном обеспечении, и в этом случае вы можете получить доступ к «RequestServices» и разрешить вашу услугу по запросу. –