c# OWIN Web API - 发现多个与 request:GET 匹配的操作
c# OWIN Web API - Multiple actions were found that match the request:GET
我在尝试使用两种不同的 GET 方法时遇到问题,一种用于检索大量资源,另一种用于检索特定资源。
Startup.cs
config.Routes.MapHttpRoute("DefaultAPI",
"api/{controller}/{action}",
new { id = RouteParameter.Optional });
Controller.cs
[RoutePrefix("api/Files")]
public class FileController : ApiController
{
// /api/Files/
[Authorize]
[Route("")]
public IHttpActionResult GetAll()
{
}
// /api/Files/Id/
[Authorize]
[Route("Id")]
public async Task<HttpResponseMessage> Get([FromBody] string id)
{
}
// /api/Files/Upload
[Authorize]
[HttpPost]
[Route("Upload")]
public async Task<HttpResponseMessage> Post()
{
}
// /api/Files/Delete
[Authorize]
[Route("Delete")]
public IHttpActionResult Delete([FromBody] string id)
{
}
这对我来说是新的,我知道我在同时使用 IHttpActionResult 和 HttpResponseMessage 时也犯了一个错误,但我想我稍后会在弄清楚路由后更改它。
错误:
当Startup.cs有
"api/{controller}/{action}"
,它 returns 一个 404 未找到,
当它是 "api/{controller}/{id}" 时,错误是:
Multiple actions were found that match the request: \r\nGetAll
如果您使用基于属性的路由,则需要在 Startup.cs
中声明任何 WebAPI 路由之前添加以下代码:
config.MapHttpAttributeRoutes();
我在尝试使用两种不同的 GET 方法时遇到问题,一种用于检索大量资源,另一种用于检索特定资源。
Startup.cs
config.Routes.MapHttpRoute("DefaultAPI",
"api/{controller}/{action}",
new { id = RouteParameter.Optional });
Controller.cs
[RoutePrefix("api/Files")]
public class FileController : ApiController
{
// /api/Files/
[Authorize]
[Route("")]
public IHttpActionResult GetAll()
{
}
// /api/Files/Id/
[Authorize]
[Route("Id")]
public async Task<HttpResponseMessage> Get([FromBody] string id)
{
}
// /api/Files/Upload
[Authorize]
[HttpPost]
[Route("Upload")]
public async Task<HttpResponseMessage> Post()
{
}
// /api/Files/Delete
[Authorize]
[Route("Delete")]
public IHttpActionResult Delete([FromBody] string id)
{
}
这对我来说是新的,我知道我在同时使用 IHttpActionResult 和 HttpResponseMessage 时也犯了一个错误,但我想我稍后会在弄清楚路由后更改它。
错误:
当Startup.cs有
"api/{controller}/{action}"
,它 returns 一个 404 未找到, 当它是 "api/{controller}/{id}" 时,错误是:
Multiple actions were found that match the request: \r\nGetAll
如果您使用基于属性的路由,则需要在 Startup.cs
中声明任何 WebAPI 路由之前添加以下代码:
config.MapHttpAttributeRoutes();