【发布时间】:2019-01-30 17:00:31
【问题描述】:
在 Asp.net WebApi2 中
当调用 api/values/9b858599-7639-45da-acd6-a1323fb019b5 时,会调用 get Action。
带有可选参数的操作。
当 api/values/9b858599-7639-45da-acd6-a1323fb019b5?maxRecords=100 或 api/values/?maxRecords=100 GetProducts Action 被调用。
在 Asp.net Core 中
但在 asp.net 核心中,当调用 api/values/9b858599-7639-45da-acd6-a1323fb019b5 时,会调用 GetProducts 操作。我想在不更改现有网址的情况下调用 Get 操作。
如何在 Asp.net core 2.0 中解决此问题
控制器
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
//https://localhost:44323/api/values/9b858599-7639-45da-acd6-a1323fb019b5
[HttpGet("{productId:Guid}", Order = 1)]
public ActionResult<string> Get(Guid productId)
{
return "value1";
}
//https://localhost:44323/api/values/9b858599-7639-45da-acd6-a1323fb019b5?maxRecords=100
//https://localhost:44323/api/values/?maxRecords=100
[HttpGet("{startRecordId:Guid?}")]
public ActionResult<IEnumerable<string>> GetProducts(Guid? startRecordId, int maxRecords, DateTimeOffset? minimumChangeDate = null)
{
return new string[] { "value1", "value2" };
}
}
Startup.cs
app.UseMvc(routes =>
{
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute("DefaultApi", "api/{controller}/{id?}");
});
【问题讨论】:
标签: c# asp.net-core asp.net-core-2.2 asp.net-core-routing