我創建了一個新的Web API項目,並創建以下路由規範(其實我已經簡化,尋找BUG):網絡API的路由只允許一個控制器
// Web API configuration and services
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}"
);
當我通過與阿賈克斯打個電話路線:
/api/account/GetSUID/0
一切工作正常。當我只是用不同的控制器:
/api/tile/GetTileSet/0
它返回200狀態,但不是打我的控制器,它只是返回jqXHR.responseText的默認頁內容!就好像它正在跳過像我請求默認站點頁面的任何API路由。
我對此感到莫名其妙,因爲我在過去幾年中在其他幾個項目中已經寫了數百個Web API函數。我從來沒有任何問題調用多個控制器。我對這裏可能發生的事情看得很高,希望有人在這裏可能有一個想法。
這裏是控制器上的樣品的方法:
[HttpGet]
public HttpResponseMessage CheckRequestedID(int id, [FromUri]string Search)
{
if (!BSDIUtil.HasAllAcceptableCharacters(Search))
return Request.CreateResponse(HttpStatusCode.BadRequest);
if (FolderModel.IDAlreadyExists(DAL, Search)) // We can check this because this function is only called when staff members are creating accounts for other people (participants always use their email).
return Request.CreateResponse(HttpStatusCode.OK, false);
else
return Request.CreateResponse(HttpStatusCode.OK, true);
}
這將如果帳戶控制器上而不是瓷磚控制器上工作。其他
有一兩件事,我使用Visual Studio和Windows 8.1
也許你的瀏覽器緩存了響應......如果你使用jQuery發送AJAX請求,你可以嘗試設置'cache:false'選項。 – nemesv 2015-02-07 21:18:34
你可以分享你的動作方法(包括任何屬性)的定義嗎?我假設你已經驗證了請求實際上到了正確的URL(即,這不是客戶端問題)? – 2015-02-07 21:19:15
nemesv - 當我將控制器切換到「帳戶」時,調用成功,因此它不能成爲緩存問題。螞蟻 - 會做的。這些調用都是相對的,如果我更改默認文檔,則返回新的默認值。 – 2015-02-07 21:33:21