【发布时间】:2012-10-05 08:31:34
【问题描述】:
我使用 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"
}
);
【问题讨论】:
-
能否提供实际的 Http Response 状态码、消息等,而不是“调用失败”?
-
我现在设法从那个调用中得到了结果消息,它说的是“找不到”。 IIS 的地址错误。我忘了添加我的虚拟文件夹的名称。所以你的问题是一个很好的提示!谢谢。
标签: asp.net-mvc json iis iis-7