這是因為被呼叫的 Controller 需要初始化,呼叫 Initialize() 並且傳入引數目前的 RequestContext,但此方法是 Protected 不能直接呼叫,只能使用 ControllerFactory,所以為了公開 Initialize 在要在被呼叫的 Controller 加入下列代碼
public class AController : Controller {
public void InitializeController(RequestContext context) {
base.Initialize(context);
}
}
然後在要呼叫的 BController 方法中加入下列代碼
public void CallAnotherControllerMissingSession1() {
AController aController = new AController();
aController.InitializeController(this.Request.RequestContext);
}
或者(被呼叫的 Controller 可省略方法 InitializeController)
public void CallAnotherControllerMissingSession2() {
AController aController = new AController();
aController.ControllerContext = new ControllerContext(this.Request.RequestContext, aController);
}