Почему родительские макеты не имеют доступа к зарегистрированным службам при введении вложенного макета (с использованием Asp.NET Ядро 5 с использованием MVC)

#asp.net #asp.net-mvc #asp.net-core

Вопрос:

Использование @inject IFooService FooService на любой главной странице макета работает нормально. Однако, если у меня есть вложенный файл макета, эти службы больше не могут быть найдены. HttpContext возвращается DefaultHttpContext значение .cshtml, и значение. cshtml 'Context' равно нулю на верхней странице макета.

Это работает:

  •  Main Layout (services can be injected here)  
  •  * Some content page.  

Это не работает:

  •  Main Layout (services CANNOT be found here any longer)  
  •  Sub Layout (services CAN be found here now)  
  •  Some content page  

Комментарии:

1. Можете ли вы показать нам структуру вашего cshtml о странице макета? И если вы покажете нам свой образец кода для тестирования (без какой-либо конфиденциальной информации), возможно, мы сможем помочь вам лучше.

2. У меня есть некоторые забавные вещи с асинхронностью, которые убивают HttpContext. Я собираюсь убрать это и посмотреть, существует ли еще проблема. Скоро будет обновлено.

3. Подтверждено — асинхронность частично испортила его и отбрасывала HttpContext.