【发布时间】:2023-03-14 18:49:01
【问题描述】:
我想要做的是在我的自定义路由中使用与默认路由模板类似的路由模板,但得到 405 - METHOD NOT ALLOWED。
第一个匹配 GET 请求@api/accounts/abc123/contacts,仅此而已。其他两个不匹配,默认路由 @api/{controller}/{id} 匹配所有四个动词。
编辑:更新路线定义
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "ContactsApi",
routeTemplate: "api/{controller}/{id1}/contacts"
);
config.Routes.MapHttpRoute(
name: "AddressesApi",
routeTemplate: "api/{controller}/{id2}/addresses"
);
config.Routes.MapHttpRoute(
name: "CoverageApi",
routeTemplate: "api/{controller}/{id3}/coverage"
);
config.Routes.MapHttpRoute(
name: "AccountsApi",
routeTemplate: "api/{controller}/{id4}/accounts"
);
我正在尝试将以上路线映射到以下操作:
编辑:根据上述路由定义使用 {id1} 参数更新。
[HttpGet]
public List<Contact> GetContacts(string id)
{
return accounts.GetContacts(id);
}
[HttpPost]
public void PostContacts(string id1, [FromBody]IEnumerable<Contact> contacts)
{
bool success = accounts.AssignContacts(id, contacts);
}
[HttpDelete]
public void DeleteContacts(string id1, [FromBody]IEnumerable<Contact> contacts)
{
bool success = accounts.RemoveContacts(id, contacts);
}
我只是想让我的路线保持一致......
【问题讨论】:
标签: asp.net-web-api asp.net-web-api2 asp.net-web-api-routing