我继承了一个设计非常糟糕的 ASP.NET MVC 3 应用程序。
我有 238 行和 63 个文件通过 Session 对象引用 Unity Manager,如下所示:
UnityManager unity = (UnityManager)Session["UnityManager"];
托管此 MVC 应用程序的服务器的 IIS 会话超时最初设置为 20 分钟,这对我的客户造成了严重破坏。你能想象 IoC “管理器”对象在 20 分钟内结束它的生命周期,而我的用户需要至少 2 小时?!?!我最近重置了 IIS 会话超时设置并将其更改为 120 分钟...
我现在想研究从我的应用程序中删除 UnityManager Session 对象。我真的不明白该怎么做。
我在这个应用程序中也没有单元测试,这真的让我很困扰。我们已经通过当前的 Session 对象查看了 Unity Manager 的单元测试,但不知道如何模拟它。
我的问题是:
- 在没有 Session 对象的情况下引用 Unity Manager 的最佳方法是什么?如何在我的控制器中调用和实例化它?
- UnityManager 的 Session 对象是首选方法吗?我的猜测是否定的,这太可怕了。
- 如何对当前的 Unity Manager Session 对象进行单元测试?