2013-09-05 56 views
0

我已經繼承了設計很差的ASP.NET MVC 3應用程序。替換(和單元測試)Unity Manager會話對象?

我有238行,63個文件通過會話對象引用統一管理,像這樣:

UnityManager unity = (UnityManager)Session["UnityManager"]; 

此MVC應用程序在原本設定在20分鐘IIS會話超時託管的服務器,這對我的客戶造成嚴重破壞。您能想象IoC「經理」對象在20分鐘內結束它的生命週期,當我的用戶需要至少2小時嗎?!?!我最近重置IIS會話超時設置並將其更改爲120分鐘...

我現在想研究從我的應用程序中刪除UnityManager會話對象。我真的不明白如何做到這一點。

我也沒有在這個應用程序中真正困擾我的單元測試。我們通過當前的Session對象查看了單元測試Unity Manager,但無法弄清楚如何模擬它。

我的問題是:

  1. 什麼是引用統一管理沒有 Session對象,最好的辦法?我如何在我的控制器中調用並實例化它?
  2. 是UnityManager的Session對象的首選方法嗎?我的猜測 是不,這太可怕了。
  3. 我該如何測試當前的Unity Manager會話對象?
+1

什麼是一個「UnityManager」嗎?這是您的IoC容器(UnityContainer)的抽象嗎?如果是這樣,你可以使用Microsoft.Practices.ServiceLocation.ServiceLocator(Unity)註冊你的容器,它將靜態地設置你的容器,而不是每個會話。每個會話確實不需要自己的IoC配置。 – agartee

回答

2

我採取的方法是用我自己的使用Unity的默認控制器解析器替換(我也使用Autofac來完成此操作),並允許我將控件的依賴注入到控制器的構造函數中answer)。

我也把樣品MVC應用程序在GitHub上的位置:https://github.com/agartee/Mvc4CustomIoC