2013-04-10 5 views
4

Я создал одно решение с двумя проектами: один представляет собой библиотеку классов с веб-интерфейсом 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"; 
+0

Могу ли я увидеть маршрут/web-api config? –

+0

Да, пожалуйста, отправьте маршруты. И проверьте, что ваши службы запущены как администратор. Я не уверен, но может потребоваться зарезервировать URL-адрес в локальной системе. – Fabske

ответ

7

Это стыдно признаться, но причина, почему он не сделал работу лгал в контроллере класс, не имеющий модификатора доступа. Обнаружив ошибку, она исправила ошибку.

+1

Просто примечание: метод также должен быть общедоступным. –

+0

Хорошая работа! Это не позор. Мы все ошибаемся, и в некоторые случаи, когда ошибки других людей могут быть действительно полезными и избавлять от лишнего времени. (Не случилось со мной, но может!) – JotaBe

+0

Жаль, что сообщение об ошибке не является описательным –

Смежные вопросы