asp.net-mvc – MVC,不再“假设”使用HttpContext.Current了吗?

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – MVC,不再“假设”使用HttpContext.Current了吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
here之后的某个人评论说,在使用MVC时不应该使用HttpContext.Current,而应该使用 ControllerBase.ControllerContext.在某些方面,这是有道理的,但在其他方面却没有.

例如,ControllerContext是一个实例变量,所以我想引用的所有地方,比如我的Session变量,我需要有一个对Controller的引用?为什么我们“不应该”在MVC中使用HttpContext.Current,当你还可以的时候?是否有一个“适当的”MVC“方式”来获取我的Session对象而无需引用Controller?

我知道测试方面,它在许多其他地方声明的原因更好,但我正在研究管理Session变量和引用HttpContext.Current的项目,我想知道是否有更好的方法获取Session对象没有传递对控制器的引用.

解决方法

这主要是因为如果使用HttpContext.Current,单元测试将非常困难,因为使用普通的模拟框架无法模拟此值.

HttpContext.Current也会使代码更加脆弱,因为它可能被滥用和滥用.例如,您可以在业务层中使用它,因为它很方便,但如果您选择使用ASP.NET之外的替代表示层,它将会中断.

通常,静态方法现在不受欢迎,因为它们不能依赖注入.

猜你在找的asp.Net相关文章