2012-11-29 82 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