所以我想这样做:
http://localhost:43751/api/doWork/asdfasfsaf
这是控制器:
public class DoWorkController : ApiController
{
public User GetWork(String input) {
Dictionary<int, Work> users = DataObjects.Work.find(input);
return users.Values.First<Work>();
}
}
我运行它并且它不起作用:
未找到与请求URI
'http://localhost:43751/api/doWork/asdfasfsaf'
匹配的HTTP资源。
和
在与该请求匹配的控制器“DoWork”上未找到任何操作。
我做错了什么?
这是我的路由配置:
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
答案 0 :(得分:0)
似乎我需要做的就是让它发挥作用:
public class DoWorkController : ApiController{
public User GetDoWork(String ID) {
Dictionary<int, Work> users = DataObjects.Work.find(input);
return users.Values.First<Work>();
}
}
答案 1 :(得分:0)
因为MVC认为您指的是其他网址。您需要定义一个正在侦听HttpGet或HttpPost类型请求的方法:
[HttpGet]
public ActionResult doWork(string input) {
// do processing and return the selected user as a model back to the view
User user = YourGetUserMethod(input);
return View(user);
}
所以你可以调用它:/ api / doWork?input = asdfasfsaf
或者,如果您想要更改URL路由以接受URL的最后部分作为参数,则需要在RouteConfig.cs文件中添加以下内容:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "DoWork", action = "doWork", id = UrlParameter.Optional }
);
您可能需要关注this post以获取有关路线映射的其他信息