我的WebApiController
名称为AdminDashBoard。
public class AdminDashBoardController : ApiController
{
[System.Web.Http.AcceptVerbs("GET")]
public HttpResponseMessage GetCaseHistory(string CaseRefId, string token)
{
**Implementation**
}
}
我可以使用
来访问API
Localhost/api/AdminDashBoard/GetCaseHistory?CaseRefId=CTcs004&token=eygk
但我想通过自定义名称(例如
)来访问它
Localhost/api/Cases/GetCaseHistory?CaseRefId=CTcs004&token=eygk
我已在WebApiConfig
中定义了自定义路由,但它无效。
config.Routes.MapHttpRoute("CaseHistory", "api/cases/{action}/{CaseRefId}/{token}", defaults: new { controller = "AdminDashBoard", action = "GetCaseHistory", CaseRefId = RouteParameter.Optional, token = RouteParameter.Optional });
答案 0 :(得分:2)
您配置的路由将解析为:
controller => AdminDashBoard
action => GetCaseHistory
但请注意,由于您已将/ {action}放置在路径模板字符串中,因此会影响检测路由以期望在请求URL中指定“操作”。
你可以试试这个:config.Routes.MapHttpRoute("CaseHistory",
"api/Cases/GetCaseHistory",
defaults:
new { controller = "AdminDashBoard",
action = "GetCaseHistory" });
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
请记住将路线放在默认路线之前,因为默认路线会在自定义路线之前捕获请求。
此外,您不需要在查询字符串中将参数“CaseRefId”和“token”定义为路由,如果您在控制器方法中定义了正确的类型,则应该解析它。
希望这有帮助。