在我们的旧ASP.NET应用程序中,我们有“上下文”的概念,即“网络”可能是网页可能需要的任何数据。因此,上下文可能包含有关网站本身的数据,它可能包含最终用途,等,等的详细信息。如何为ASP.NET核心应用程序设置上下文
完整的上下文在请求的生命周期开始时由HttpModule加载。上下文的每个部分都保存在缓存中或当前项目集合中(取决于我们想要保存信息的时间长短)。当页面需要时,页面将会调用Context。
所以,我想知道如何最好地实现类似的.NET核心。
如果我们把最终用户的数据的简单的例子....
我想到的是,这个数据可以在所谓的“最终用户”的对象举行。该控制器的构造函数可以有型IEndUser的参数,我们可以使用内置的依赖注入到Startup.cs添加此实例:
services.AddScoped<IEndUser, EndUser>();
这当然增加了香草终端用户的对象,但我希望我可以使用MiddleWare类来首先设置它的所有属性.....因为我使用的是“AddScoped”,那么我的希望是Controller的构造函数将接收MiddleWare刚刚填充的同一个实例。不过,我很快意识到这些是不同的对象(显然是事后),这是错误的方法。
那么:什么是正确的方法?请记住以下几点:
- 在旧的HttpModule,人们可以加载网站对象(在概念上与终端用户对象相似)(从数据库加载数据)和HTTP模块检查中,如果site.OnMaintenance财产是正确的,在这种情况下,执行重定向到适当的页面,而不管当前的请求,并且在执行进入请求的控制器之前。
所以总结一下,我想:
- 我中间件创建一个类,填充它的特性(从数据库)
- 我中间件在该类的性能进行测试,可能会执行重定向。
- 如果没有重定向,那么将该实例注入到我的Controller的构造函数中。