我正在调查ASP.NET 5中的DI主题,我遇到了这样的问题 - 我不明白如何为每个请求创建一个新的服务实例。
我使用代码:
services.AddScoped<ValueStore>();
在我的中间件中,我抓住了价值:
var someValueStore = app.ApplicationServices.GetService<ValueStore>();
完整代码可用here
我的问题是:虽然我希望每次请求都能续订此服务,但不会发生这种情况,并且其行为就像注册为AddSingleton()
一样。
我做错了吗?
答案 0 :(得分:10)
$(".start-date").eq(i).text(today);
未提供请求范围的app.ApplicationServices
。当您使用IServiceProvider
时,它将返回ValueStore
的单例实例。你有两个选择:
使用GetService<>()
:
HttpContext.RequestServices
或者在中间件的var someValueStore = context.RequestServices.GetService<ValueStore>();
方法中注入ValueStore
:
Invoke
我克隆了你的回购,这很有效。