所以我有2个控制器:如何设置控制器的默认操作?
[AllowCrossSiteJson]
public class ItemController : ApiController {
[HttpGet]
public LinkedList<Object> FindItem([FromUri]ItemQuery query) {
....
}
}
而且
[AllowCrossSiteJson]
public class SubDepController : ApiController
{
[HttpGet]
public LinkedList<Object> FindSubDep(string ID) {
....
}
}
这里是事,我打电话都:
http://localhost:43751/api/SubDep
http://localhost:43751/api/Item
和项目控制工作,但是SubDep确实不行!这是为什么?
这里是我的WebApiConfig:
public static void Register(HttpConfiguration config) {
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "withAction",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
我回来的错误是这样的:
{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:43751/api/SubDep'.","MessageDetail":"No action was found on the controller 'SubDep' that matches the request."}
奖金的问题:
如何ASP.NET MVC知道我尝试点击:
http://localhost:43751/api/Item
它会自动进入FindItem Action?这对我来说就像纯粹的魔术!
你是完全正确的,这就是原因。我使参数是可选的,它正确地调用了该函数。 – Bill