我有一个名为“UploadsController”的控制器。我有一个GET操作,像这样:WebForms中的ASP.NET Web API 404
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),但我似乎无法得到这个。
作为一个方面说明,由于某种原因,请求没有在fiddler中显示,当您尝试调试这些类型的东西时,这有点令人讨厌。
任何帮助表示赞赏。
适用于我的机器。 :-) 第一步是让小提琴手在这里工作。看看[里克的帖子](http://www.west-wind.com/weblog/posts/2009/Jan/14/Monitoring-HTTP-Output-with-Fiddler-in-NET-HTTP-Clients-and -WCF-Proxies)配置Fiddler以使用HttpClient请求。 另外,正如你注意到的,你不需要你的global.asax文件中的第二条路线。第一个就够了。 –
试过web.config方法,提琴手仍然没有捕获。 – Rivka
啊,现在我相信你正在击中Fiddler本地主题的分类问题。根据Fiddler文档_“重要提示:无论其他设置如何,.NET都会绕过包含本地主机的URL的Fiddler代理,因此,而不是使用本地主机,请更改您的代码以引用计算机名称。”_ –