加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 00:19:11 所属栏目:asp.Net 来源:网络整理
导读:在 here之后的某个人评论说,在使用MVC时不应该使用HttpContext.Current,而应该使用 ControllerBase.ControllerContext.在某些方面,这是有道理的,但在其他方面却没有. 例如,ControllerContext是一个实例变量,所以我想引用的所有地方,比如我的Session变量,我需
在 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之外的替代表示层,它将会中断.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读