调用带参数的ASP.NET Core Web API端点时遇到异常问题求助
调用带参数的ASP.NET Core Web API端点时遇到异常问题求助
各位大佬好,我最近在开发ASP.NET Core Web API时碰到了一个头疼的问题,实在搞不定来求助了。
本地开发环境里,我写了一个ReviewSummaryController,里面有两个GET接口:一个是不带参数的GetAll,用来获取所有的审核摘要,这个接口调用完全正常;但另一个带userId参数的接口,每次调用都会抛出异常,返回500内部服务器错误。
下面是我的控制器代码:
namespace APP_API.Controllers { [ApiController] [Route("api/[controller]")] public class ReviewSummaryController : BaseController { protected IReviewSummaryService _reviewSummaryService; public ReviewSummaryController(IConfiguration configuration, ILogger<BaseController> logger, IHttpClientFactory httpClientFactory, IReviewSummaryService reviewSummaryService) : base(configuration, logger, httpClientFactory) { _reviewSummaryService = reviewSummaryService; } [HttpGet(Name = "GetAllReviewSummary")] [Authorize] [OktaAllowedRoles(["test-role"])] [EnableRateLimiting("api")] public async Task<IActionResult> GetAll() { return Ok(await _reviewSummaryService.GetAllAsync()); } [HttpGet("{userId}")] [Authorize] [OktaAllowedRoles(["test-role"])] [EnableRateLimiting("api")] public async Task<IActionResult> GetByUserId(string userId) { var result = await _reviewSummaryService.GetByUserIdAsync(userId); if (result == null) { return NotFound(); } return Ok(result); } } }
我是通过GET /api/ReviewSummary/12345这样的URL去调用带参数的接口的,权限验证这块应该没问题,因为GetAll接口同样用了[Authorize]和[OktaAllowedRoles]特性,能正常返回数据。查看服务器日志,发现异常提示要么是参数绑定失败,要么是服务层的GetByUserIdAsync方法抛出了空引用(暂时没拿到完整的异常栈,只能先猜测)。
有没有朋友能帮我分析下可能的原因?比如路由配置是不是有问题?参数类型匹配吗?或者是我在依赖注入或者服务层实现里哪里漏了东西?
备注:内容来源于stack exchange,提问作者Qiuzman
相关产品推荐
相关产品推荐

