在负载测试期间,通过构造函数类对象注入的DI在控制器中解析为null

时间:2019-05-14 10:40:13

标签: dependency-injection asp.net-core-2.2

在我们的项目中,我们通过构造函数在所有控制器中都具有DI(asp.net核心内置依赖项注入)。一个控制器动作调用通过构造函数解析的类的函数,在正常加载期间没有任何问题。该网站经过压力测试,大约有1000个请求(斜率为1秒),大约5-10%的请求失败,并抛出异常作为空引用。

Is it necessary to check null values with constructor injection? 该链接建议构造函数中的对象永远不会为null,即框架将在到达控制器作用域之前引发异常。

startup.cs中的依赖注入

  services.AddSingleton<IRandomInterface , ImplementedClass>();

控制器中的构造函数:


 public RandomController(IRandomInterface wgcr,ILogger<RandomController> log)
 {

            this.object = wgcr;
            this._log = log;

 }

控制器中的成员对象:

 private IRandomInterface object { get; set; }

控制器动作:

  [HttpPost("aa")]
  public async Task RandomFunction()
  {

        try
        {  

              if(object ==null)
              {
                    _log.LogInformation("RandomFunction object : null");
              }
              else
                 await object.RandomFunction();



       }
       catch (Exception ex)
       {

                _log.LogError("error in RandomFunction " + ex.Message "StackTrace " + ex.StackTrace);

        }
  }

我找不到在控制器内部将对象解析为null的可能原因,如果没有任何人对asp.net核心内置依赖项注入有任何见解,将不胜感激。

谢谢!

0 个答案:

没有答案