我继承了一个设计非常糟糕的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进行单元测试,但无法弄清楚如何模拟它。
我的问题是:
答案 0 :(得分:2)
我采用的方法是使用我自己的默认控制器解析器替换使用Unity(我也使用Autofac完成此操作),并允许我将我的依赖项注入控制器的构造函数(请参阅此{{3 }})。
我还在GitHub上放了一个示例MVC应用程序:answer