我有一个基本的 asp.net 自托管应用程序,它使用 HttpConfiguration 类并包含以下路由:
config.Routes.MapHttpRoute(
name: "login",
routeTemplate: "login",
defaults: new { controller = "Login", action = "Get" }
);
我想根据请求中包含的 HTTP 动词定义操作,而不是在 URL 中指定。
IE
curl http://domain/login -X GET
应该调用类Get
上的方法LoginController
。和
curl http://domain/login -X POST -H 'Content-Length: 1' -d 'x'
应该在控制器类中调用 Post 'Post' 方法。如果我将路由配置调整为
config.Routes.MapHttpRoute(
name: "login",
routeTemplate: "login/{action}",
defaults: new { controller = "Login", action = "Get" }
);
然后curl
到:
curl http://domain/login/post -X POST -H 'Content-Length: 1' -d 'x'
但这是在 http 请求和 URI 中指定 post 动词(我不希望这样做)。
===== 编辑
列维在这里的答案:https ://stackoverflow.com/a/2143991/3114742解决了我的问题