我已經創建了一個網頁使用Asp.Net MVC 4(VS2010 SP1,Windows 7)。它還通過我可以進行搜索或上傳的東西(數據和文件)提供api。當我在VS2010 SP1的開發服務器上部署頁面時,所有工作正常,但是當我選擇IIS(IIS7)時,api不再工作。 「IsSuccessStatusCode」似乎是錯誤的。但該頁面本身工作,可以從其他機器進行處理。後/得到VS開發服務器,但與IIS7的作品
這是我使用內置的開發服務器的地址: 「HTTP://本地主機: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響應狀態碼,消息等? – tugberk
我現在設法從該調用中獲得結果消息,並且它表示「未找到」之類的東西。 IIS的地址是錯誤的。我忘了添加我的虛擬文件夾的名稱。所以你的問題是一個很好的提示!謝謝。 – Katharina