Jas*_*ext 5 asp.net-core-mvc asp.net-core-2.0
我希望能够在同一个URL上使用已发布的JSON或表单数据.
事实上,我得到:
fail: Microsoft.AspNetCore.Mvc.Internal.ActionSelector[1]
Request matched multiple actions resulting in ambiguity. Matching actions:
:
fail: Microsoft.AspNetCore.Server.Kestrel[13]
Connection id "0HLDLB0LJCPJ4", Request id "0HLDLB0LJCPJ4:00000001": An unhandled exception was thrown by the application.
Microsoft.AspNetCore.Mvc.Internal.AmbiguousActionException: Multiple actions matched. The following actions matched route data and had all constraints satisfied:
Run Code Online (Sandbox Code Playgroud)
https://andrewlock.net/model-binding-json-posts-in-asp-net-core/建议使用不同的端点,但在这种情况下我不能这样做.
https://massivescale.com/web-api-routing-by-content-type/为asp.net建议了一种方法,例如:
[ContentTypeRoute("api/test/bytype", "application/json")]
Run Code Online (Sandbox Code Playgroud)
要么
[ContentTypeRoute("api/test/bytype", "application/x-www-form-urlencoded")]
Run Code Online (Sandbox Code Playgroud)
但在.net核心中,我们没有System.Web.Http.Routing.也许它可以被移植到使用Microsoft.AspNetCore.Mvc.Routing ...但是有什么东西可以取代IHttpRouteConstraint
我的问题:.net core mvc已经内置了这样的东西吗?
例如,在Java的JAX-RS中,有@Consumes("application/json")
Vya*_*ava 12
我通过Consumes属性完成了这个:
http://example.com/payment/callback - 接受x-www-form-urlencoded.
[HttpPost]
[Route("callback")]
[Consumes("application/x-www-form-urlencoded")]
public ActionResult Post([FromForm] string value)
{
}
Run Code Online (Sandbox Code Playgroud)
http://example.com/payment/callback - 相同的网址但接受application/json.
[HttpPost]
[Route("callback")]
[Consumes("application/json")]
public ActionResult Post([FromBody] JObject value)
{
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3049 次 |
最近记录: |