我使用 Asp.Net MVC 4(VS2010 SP1,Windows 7)创建了一个网页。它还有一个 api,我可以通过它进行搜索或上传某些东西(数据和文件)。当我在 VS2010 SP1 的开发服务器上部署页面时,一切正常,但是当我选择 IIS (IIS7) 时,api 不再工作。“IsSuccessStatusCode”似乎是错误的。但是页面本身可以工作并且可以从其他机器访问。
这是我用于内置开发服务器的地址:“http://localhost:56272/api/” 我用于 IIS 的地址:“http://127.0.0.1/api/”
我为 IIS 创建了一个虚拟目录(由 VS2010 完成)。我是否需要另外配置一些东西,或者它可能是只存在于 IIS 的路由问题?
这是我的客户端 - MyService 类 - 用于 GET:
public MyService(string serviceAdress) //"http://127.0.0.1/api/"
{
this.serviceAdress = new Uri(serviceAdress); //of type Uri
client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
}
public Task<IEnumerable<Item>> SearchByTag(string tag)
{
client.BaseAddress = serviceAdress;
var getStuffCall=client.GetAsync("Search/ByTag/" + tag);
var r=getStuffCall.ContinueWith(
t =>t.Result.IsSuccessStatusCode? (t.Result.Content.ReadAsAsync<IEnumerable<Item>>().Result):new List<Item>()
);
return r;
}
我的服务器端如下所示:
public class SearchController : ApiController
{
[HttpGet]
public IEnumerable<Shared.Item> ByTag(string search)
{....}
}
这是 WebApiConfig 中的路由:
config.Routes.MapHttpRoute(
name: "SearchApi",
routeTemplate: "api/Search/{action}/{search}",
defaults: new
{
controller="Search"
}
);