2013-04-10 2 views
4

두 프로젝트로 하나의 솔루션을 만들었습니다 : 하나는 자체 호스트 웹 API (http://www.asp.net/web-api/overview/hosting-aspnet-web-api/self-host-a-web-api의 도움으로 생성)가있는 클래스 라이브러리이고 두 번째는 TopShelf로 만든 Windows 서비스입니다 . 이 솔루션의 목적은 웹 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 서비스 프로젝트로 옮겼지만 작동하지 않습니다.

누군가 내가 겪고있는 문제가 무엇인지 말해 줄 수 있습니까? 컨트롤러가 단순한 솔루션에 있다면 컨트롤러가 보이지 않는 이유는 무엇입니까?

편집 : 내 경로는 다음과 같습니다 : 그것은 수치이다

defaultControllerName = "Report"; 
+0

경로/web-api 설정을 볼 수 있습니까? –

+0

예. 경로를 게시하십시오. 그리고 서비스가 관리자로 실행되는지 확인하십시오. 확실하지 않지만 로컬 시스템에 URL을 예약해야 할 수도 있습니다. – Fabske

답변

7

var config = new HttpSelfHostConfiguration(String.Format("http://localhost:{0}", port)); 
config.Routes.MapHttpRoute("API Default", "{action}", new { controller = defaultControllerName }); 

은 인정하지만, 그것을이 컨트롤러에 거짓말을 작동하지 않는 이유 액세스 수정자가없는 클래스 공개적으로 버그를 수정했습니다.

+1

참고 사항 :이 방법은 공개되어야합니다. –

+0

잘 했어! 그것은 부끄러운 일이 아닙니다. 우리 모두는 실수를 저지르고 어떤 사람들은 실수로 다른 사람들의 실수를 보면서 많은 도움을 줄 수 있습니다. (나에게 일어난 일은 아니지만 !!) – JotaBe

+0

오류 메시지가 설명이 아닌 것 같아 수치 스럽다 –

관련 문제