Я создал одно решение с двумя проектами: один представляет собой библиотеку классов с веб-интерфейсом Self Host Web (созданный с помощью http://www.asp.net/web-api/overview/hosting-aspnet-web-api/self-host-a-web-api), второй - это служба Windows, созданная с помощью TopShelf , Целью этого решения является предоставление отчета о состоянии службы с использованием веб-API.Контроллер не найден с помощью веб-API, хотя существует контроллер
Все работает нормально, но когда я воссоздаю свое решение в целевом решении, все приложение работает неправильно. Службы Windows, похоже, работают, но когда я набираю localhost: 8080/Test, который, как предполагается, просматривает OK (и это делается в отдельном тестовом решении, упомянутом в начале), он выдает ошибку (рассматривается как xml):
Message: No HTTP resource was found that matches the request URI 'http://localhost:8080/Test'.
MessageDetail: No type was found that matches the controller named 'Report'.
В проекте, который содержит SelfHost, есть ReportController (наследующий от ApiController), но как-то он «видимый». Я предположил (глупо догадаться, я полагаю) и переместил его в проект службы Windows, но он также не работает.
Может кто-нибудь сказать мне, в чем проблема, с которой я столкнулся? Почему он не видит контроллер, если он имеет простое решение?
EDIT: Моя маршрутизация выглядит следующим образом:
var config = new HttpSelfHostConfiguration(String.Format("http://localhost:{0}", port));
config.Routes.MapHttpRoute("API Default", "{action}", new { controller = defaultControllerName });
где
defaultControllerName = "Report";
Могу ли я увидеть маршрут/web-api config? –
Да, пожалуйста, отправьте маршруты. И проверьте, что ваши службы запущены как администратор. Я не уверен, но может потребоваться зарезервировать URL-адрес в локальной системе. – Fabske