Я пытаюсь сделать этот вызов один раз во время запуска.vNext Пример приложения_Start()
var assemblies = BuildManager.GetReferencedAssemblies();
Это было перенесено из проекта MVC 4.
Вызов его из Startup.ConfigureServices или Startup.Configure выдает исключение;
System.InvalidOperationException Этот метод не может быть вызван во время фазы инициализации перед запуском приложения.
Где в трубопроводе запуска vNext я могу начать делать вызовы, подобные этим, не конфликтовать с инициализацией предпусковой.
Отдельный вопрос, должен ли я делать этот явный вызов BuildManager.GetReferencedAssemblies(); во время запуска. Причиной для вызова является поиск всех сборок для этого приложения, поиск всех областей приложения, поиск всех контроллеров в приложении и наложение фильтров на все из них. Раньше я налагал фильтры Auth на каждый контроллер и не полагался на разработчиков, чтобы пометить атрибуты [Authorize] для действий. Он поставил точку, чтобы удивить появление дыр в безопасности. Разработчикам пришлось отказаться от конфигурации, сделав это с ними, и это привело к документированному отслеживанию безопасности.
Я исследовал материал промежуточного программного обеспечения, но мне нравится делать все мои подключения вверх, а затем разрешать фреймворк приложения работать так, как ему нравится.
Кто-то еще предложил использовать OWIN, но я хотел бы следовать соглашениям vNext, если все возможно, а не смешивать и сопоставлять.
Другое предложение было положить Global.asax обратно, и т.д.
Спасибо за любую сторону, что соответствовало бы тому, как vNext.
Ввод кода в Application_Start в Global.asax может служить вашей цели. – Agalo
BuildManager.GetReferencedAssemblies() не относится к asp.net-core. Также не Glabal.asax. Startup.cs - это точка входа. Я не уверен, как перечислить все сборки. – Tratcher
Если вы ищете способы остаться в ядре и сделать это, взгляните на эту тему на сайте github для coreclr, похоже, что у вас есть несколько причин, чтобы привести вас в правильном направлении (при условии, что все это hasn 't изменено, это 7 месяцев, и все выпуски до сих пор преувеличивают все): https://github.com/dotnet/coreclr/issues/919 –