我有一个名为“UploadsController”的控制器。我有一个像这样的 GET 操作:
public string GetUpload([FromUri]string action)
{
return "hey " + action;
}
如果我在浏览器中导航到以下 API URL,我会得到一个成功的响应。
http://localhost:52841/MySite/api/uploads?action=testaction
但是,当我尝试从 WebForms 应用程序中的代码隐藏调用 API 时,我收到 404 响应。
这是我的 Global.aspx 文件中的内容(尽管我相信第一个应该这样做):
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional }
);
RouteTable.Routes.MapHttpRoute(
name: "Default2Api",
routeTemplate: "api/{controller}/{action}",
defaults: new { controller = "Uploads", action = "GetUpload" });
这是我调用 API 的方式:
// Send a request asynchronously continue when complete
client.GetAsync("http://localhost:52841/MySite/api/uploads?action=testaction").ContinueWith(
(requestTask) =>
{
// Get HTTP response from completed task.
HttpResponseMessage response = requestTask.Result;
// Check that response was successful or throw exception
response.EnsureSuccessStatusCode();
// Read response asynchronously as JsonValue
response.Content.ReadAsAsync<string>().ContinueWith(
(readTask) =>
{
var result = readTask.Result;
//Do something with the result
});
});
我以为我以前做过这个(使用 RC 版本,现在使用 RTM),但我似乎无法得到这个。
附带说明一下,由于某种原因,请求没有显示在提琴手中,当您尝试调试这些东西时,这有点烦人。
任何帮助表示赞赏。