我正在尝试并排使用 Web API 和 Web 应用程序,但 Web API 路由存在一些问题。
这些是路由配置:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
// Map this rule first
config.Routes.MapHttpRoute(
name: "WithActionApi",
routeTemplate: "api/{controller}/{action}/"
);
//sets up the API route
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/"
//,defaults: new { id = RouteParameter.Optional }
);
它适用于 Web 应用程序,适用于仅包含 /api/controller 的 Web api,但如果我调用 /api/controll/action 则无法正常工作
我在用着:
[HttpPost]
[ActionName("ConfirmRequest")]
public HttpResponseMessage ConfirmRequest(string guid, string type, PartiStatus status = PartiStatus.Yes)
指定动作动词和名称。我尝试了路由调试器(在 web api 中不起作用)和另一个可以(并且崩溃)并且无法使 POST 操作起作用的调试器。
我最终将此操作更改为 GET 并且它工作正常,我猜 GET 参数可以帮助框架解决它。
我仍然不确定如何使其正常工作。(没有个性映射到行动)