【发布时间】:2016-07-31 15:22:57
【问题描述】:
我在尝试使用两种不同的 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}"
,它返回一个 404 Not found, 当为“api/{controller}/{id}”时,错误为:
找到多个与请求匹配的操作:\r\nGetAll
【问题讨论】:
标签: c# asp.net-web-api owin