Можно ли вызывать конечные точки WebAPI без расширения базового класса контроллера? У меня есть фоновая служба (базовый класс HostedService, реализующий IHostedService) в .Net Core. Моя структура классов уже высечена, поэтому я не могу изменить базовый класс своих фоновых служб. Но было бы огромным подспорьем, если бы я мог вызывать на них конечные точки url, фактически не имея отдельного контроллера.
Это возможно?
Обновлено: Мои фоновые службы выглядят точно так же, как это.
@ MarcusHöglund Этот вопрос касается старого ASP.NET MVC, а не ASP.NET Core.
Проверьте это Конечные точки API ASP.NET Core
Почему бы вам не использовать что-то похожее на ValuesController в предоставленной вами ссылке?
Вам нужно только создать новый контроллер с практически любой логикой, просто вызовы вашей размещенной службы.
Я уже так делаю. Я вставляю свой сервис в свой контроллер и вызываю там методы. Но мне нужно создать контроллер только для вызова этих методов и ни для чего другого, и было бы лучше, если бы я мог полностью отказаться от контроллера.
Но так работает фреймворк MVC. Вы создаете контроллер как слой для отображения ваших конечных точек. Этот уровень не обязательно должен содержать бизнес-логику. Так что вполне нормально вызывать другую службу в вашем контроллере. Но вы необходимость контроллер, чтобы сделать API доступным с MVC. - Обратите внимание, что вам не нужно наследовать от Controller
или ControllerBase
. Вам просто нужен суффикс Controller
в имени типа контроллера.
Возможный дубликат Есть ли способ использовать класс без наследования от ApiController, использовать в качестве контроллера api?