В нашем проекте у нас есть DI (встроенная зависимость ядра asp.net) во всех контроллерах с помощью конструктора. Действие одного контроллера вызывает функцию класса, разрешенную с помощью конструктора. У него нет проблем во время обычной загрузки. Только когдавеб-сайт подвергается стресс-тестированию с около 1000 запросов (с шагом 1 секунда), около 5-10% запросов не выполняются, исключение выдается как нулевая ссылка.
Необходимо ли проверять нулевые значения с помощью инжектора конструктора? Эта ссылка предполагает, что объект в конструкторе никогда не будет нулевым, т. Е. Каркас будет выдавать исключение, прежде чем достигнет области контроллера.
Внедрение зависимостей в 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);
}
}
Не могу найти возможную причину, почемуобъект разрешается как нулевой внутри контроллера без исключения, прежде чем бросать. Если у кого-то есть пониманиеВнедрение встроенных зависимостей в ядро rding asp.net будет высоко оценено.
Заранее спасибо!