我有一个简单的 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] 删除。
我来说两句