2012-11-29 2 views
0

404 제공 :서버 측 호출 apiController이 내 코드입니다 IIS7

1 HttpClient client = new HttpClient(); 
2 client.BaseAddress = new Uri("http://localhost/"); 
3 HttpResponseMessage message = client.GetAsync("api/MyAPI").Result; 
4 IEnumerable<string> supplies = 
       message.Content.ReadAsAsync<IEnumerable<string>>().Result; 
5 return View(supplies); 

그리고 오류가 라인에 3 오류 발생 : (404)

을하지만 2010 년 개발 서버를 비주얼 스튜디오를 사용하면 오류가 발생하지 .

+0

호스트 방식에 따라 404가 반환됩니다. 아마도 IIS의 가상 디렉터리에 넣을 수 있습니까? – gideon

+0

예, 가상 디렉터리에 넣습니다. 가상 경로는 '/ WebAPITest'이고 프로젝트 URL은 'http : // localhost/WebAPITest'입니다. – Ray

+0

답변을 추가했습니다. – gideon

답변

1

본질적으로 사례를 직접 처리해야합니다.

http://localhost/api/MyAPI 

그리고 생산을 위해 그것이 IIS에 :

개발에 대한 API의 경로가

http://localhost/WebAPITest/api/MyAPI 

우리는 내 회사에서 실제로 할 것입니다 가장 간단한 방법은, 기본 경로를 구성 (응용 프로그램 설정 어쩌면)에 넣고 다음을 수행합니다.

Settings.BaseUrl = "http://localhost/"; 
client.BaseAddress = new Uri(Settings.BaseUrl); 

IIS에 배포 Settings.BaseUrlhttp://localhost/WebAPITest/으로 변경하십시오.

이상적으로 VS 개발 서버를 삭제하고 IIS에서 디버깅 할 수도 있습니다. (이것은 관리자 권한으로 VS를 실행해야합니다.)

+0

감사합니다. 잘 작동합니다! – Ray