2012-11-29 58 views
0

這是我的代碼:服務器端調用apiController給404 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

但是當我使用Visual Studio 2010開發服務器,也不會出現錯誤。

+0

它只是基於你如何託管它而返回一個404。也許你把它放在IIS中的虛擬目錄中? – gideon

+0

是的,我把它放在一個虛擬目錄中,虛擬路徑是:'/ WebAPITest',vs項目url:'http:// localhost/WebAPITest' – Ray

+0

我加了一個答案。 – gideon

回答

1

基本上你必須自己照顧這些情況。

對於發展路徑到您的API是:

http://localhost/api/MyAPI 

而對於生產上的IIS是:

http://localhost/WebAPITest/api/MyAPI 

最簡單的方法,這是我們在我的公司做其實,將基本路徑放入配置中(應用程序設置也許),然後執行此操作:

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

當您部署到IIS將Settings.BaseUrl更改爲http://localhost/WebAPITest/

理想情況下,您也可以放棄VS開發服務器並在IIS上進行調試。 (這需要VS以管理員權限運行)

+0

謝謝!它的效果很好! – Ray