GET api 无法获取其参数

泛光灯

我有一个简单的 aspnet core api 控制器,当一个 get 动作时,但这个动作无法从查询路径中获取它的参数。我在使用 webapi 路由时有什么问题吗?

行动:

    [HttpGet]
    [AllowAnonymous]
    public string Test(string arg) // arg is always null no matter what path I use
    {
        return arg;
    }

路线:

routes.MapAreaRoute(
                name: "ad",
                areaName: "Ad",
                template: "api/{area:exists}/{controller}/{action}/{id}",
                defaults: new { controller = "Ad" }
            );
routes.MapRoute(
                name: "default",
                template: "{controller}/{action}",
                defaults: new { controller = "Home", action = "Index" }
            );

日志:

> 信息:Microsoft.AspNetCore.Hosting.Internal.WebHost[1] 请求开始 HTTP/1.1 GET http://localhost/api/Ad/Ad/Test/asdfasdfdbug:Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler[9] AuthenticationScheme:承载未经过身份验证。dbug:Microsoft.AspNetCore.Routing.RouteConstraintMatcher[1] 键为“area”的路由值“Ad”与约束“Microsoft.AspNetCore.Routing.Constraints.CompositeRouteConstraint”不匹配。dbug:Microsoft.AspNetCore.Routing.RouteConstraintMatcher[1] 键为“area”的路由值“Ad”与约束“Microsoft.AspNetCore.Routing.Constraints.CompositeRouteConstraint”不匹配。dbug:Microsoft.AspNetCore.Routing.RouteBase[1] 请求成功匹配名称为“ad”且模板为“api/{area:exists}/{controller}/{action}/{id}”的路由。dbug:Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1] 正在执行操作 Api.Areas.Ad.Controllers.AdController。测试 (Api) 信息:Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1] 使用参数 () 执行操作方法 Api.Areas.Ad.Controllers.AdController.Test (Api) - ModelState 是有效的 dbug:Microsoft.AspNetCore.Mvc .Internal.ControllerActionInvoker[2] 执行动作方法 Api.Areas.Ad.Controllers.AdController.Test (Api),返回结果 Microsoft.AspNetCore.Mvc.ObjectResult。dbug:Microsoft.AspNetCore.Mvc.Internal.ObjectResultExecutor[4] 未找到执行内容协商请求的信息。dbug:Microsoft.AspNetCore.Mvc.Internal.ObjectResultExecutor[2] 选择输出格式化程序“Microsoft.AspNetCore.Mvc.Formatters.HttpNoContentOutputFormatter”和内容类型“”来写入响应。信息:Microsoft.AspNetCore.Mvc.Internal.ObjectResultExecutor[1] 正在执行 ObjectResult,写入值 Microsoft.AspNetCore.Mvc。控制器上下文。信息:Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[2] 在 193.6691 毫秒内执行操作 Api.Areas.Ad.Controllers.AdController.Test (Api) dbug:Microsoft.AspNetCore.Server.Kestrel[9] 连接 ID“0HL9N6GCMPEP7”完成保持活动响应。信息:Microsoft.AspNetCore.Hosting.Internal.WebHost[2] 请求在 218.2123ms 204 完成

阿诺

如果异常(http://localhost/api/Ad/Ad/Test/asdfasdf)中所示的 URI允许您进入该方法。这两种解决方案之一应该有效:

1:/{id}从路由中删除并更改您的请求 Uri:http://localhost/api/Ad/Ad/Test?args=asdfasdf

2:要么/{id}在路由中重命名要么将/{args}方法的参数重命名为 ID。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章