在Mvc.Controller中使用Server

Dan*_*ite 3 c# asp.net-mvc controller

我有自己的遗传App.Controller距离Mvc.Controller,然后我所有的控制器继承.我写了利用接口的提供者和执行它MyService和构造函数将Server财产的Mvc.Controller这是HttpServerUtilityBase.

但是,我实例化MyServiceApp.Controller构造函数.问题是ServerController 的属性null在构建时MyService.我曾经习惯于public Controller () : base() { }建造基地.但是,Server遗体null.

我想Web.HttpContext.Current.Server尽可能避免.

有没有人解决这个问题?

编辑:嗯,我已经实现了tvanfosson的建议,当我的app MyService在属性get方法中构造时,Server仍然是null.

编辑2:没关系,我是个傻瓜.我有另一个Controller使用Server,并没有改变它.案件结案.

tva*_*son 8

使用延迟初始化来构建您的服务.

private MyService service;
public MyService Service
{
    get
    {
         if (this.service == null)
         {
             this.service = new MyService(this.Server);
         }
         return this.service;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您的服务实际上不会实例化,直到它在控制器操作中使用,并且此时已设置Server属性.

  • 或覆盖Controller.Initialize,它会在正确的时间触发. (3认同)