试图找出一种优雅的方式来坚持在ASP.NET MVC请求管道对象之间的数据(Trying to fi

2019-09-17 16:17发布

框架:ASP.Net MVC 3

当一个请求到来时,我拦截通过一个全球性的过滤器的要求和执行基于子域数据库查找起来。 需要保留的其他对象(即控制器),使得DB命中不需要时可能需要的数据再次执行从数据库查询返回INT。

我希望避免使用cookie,因为这个信息系统的相关部分,我不想靠饼干被启用。

我已阅读了相关的问题在这里 ,并在这里它没有提供任何好的答案。

其实,我有两个问题:

  1. 截至目前,我想出了一个子域管理员对象,它确实繁重,并通过我的IoC有管理的对象是HTTP请求范围,我可以请求作为可能的解决方案过程中随时抓住那个经理。

    有没有更好的方式来进行跨不同的对象信息的MVC请求管道我已经看过它之后? - 我曾研究把信息反馈到请求莫名其妙的想法(这涉及到问题#2)。

  2. 如果你使用Request存储的数据(即拦截该请求,进行查找,写入请求),其中将持有该信息的逻辑的地方吗?

    我回顾了会议,但是,这似乎是紧密联系在一起的Web服务器配置为会议的方式,我已经讲过了,我不想使用Cookie。 如后数据和查询字符串集合其他区域锁定了他们的安全考虑。

有什么建议么?

Answer 1:

1是非常接近。

子域名经理也许可以是个单(使用IOC容器也许),以用于查找一个子域一旦数据已初步加载一个简单的静态字典。 如果您担心有这个初始负载发生,而不执行数据跨多个服务器上加载SYNCD多次你可以看看这取决于使得数据库调用的开销分布式缓存(AppFabric中,NCACHE,内存缓存)。

我不会用HttpContext.Item但是存储的ID。 我会用你的IOC容器注入控制器(S)(地产注入可能)这一点。 使用最IOC容器,你应该能够有一个HttpRequest的开始这场火灾和最后一个持续的“用户会话/交易”的寿命。

NHibernate的挖洞让这一切要实现这么容易很可笑http://nhforge.org/wikis/burrow/default.aspx



Answer 2:

我觉得你的第一种方法与IoC容器和HTTP请求的范围是好去。

关于第二个问题:在正确的地方将是HttpContext.Items店,存储键值对当前请求的生命周期。



文章来源: Trying to figure out an elegant way to persist data between objects in ASP.NET MVC Request Pipeline