MVC,不再“应该”使用 HttpContext.Current 了吗?

2023-11-22

有人在帖子里here,评论说在使用 MVC 时不应该使用 HttpContext.Current,而应该使用ControllerBase.ControllerContext。在某些方面,这是有道理的,但在其他方面则不然。

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

我知道测试方面,由于许多其他地方所述的原因,它更好,但我正在开发一个管理 Session 变量和引用 HttpContext.Current 的项目,我想知道是否有更好的方法来掌握会话对象,无需传递对控制器的引用。


这主要是因为如果您使用单元测试会非常困难HttpContext.Current因为使用普通的模拟框架不可能模拟这个值。

HttpContext.Current还会导致代码更脆弱,因为它可能被滥用和误用。例如,您可以在业务层中使用它,因为它很方便,但如果您选择使用 ASP.NET 之外的替代表示层,它就会崩溃。

一般来说,静态方法现在不受欢迎,因为它们不能依赖注入.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC,不再“应该”使用 HttpContext.Current 了吗? 的相关文章

随机推荐