首页 > 解决方案 > ASP.NET Core Web API 错误请求

问题描述

我有点困惑 - 我创建了一个 ASP.NET Core Web API MVC 项目,但是当我尝试发出请求时,我得到以下响应:

我正在使用 Postman 向https://localhost:44337/api/Solve发布以下正文:

{
    "examId":"0f537776-1acf-478f-82ee-c8476bc3e005",
    "selectedAnswers":
    [
        {
            "id":"9163fd1c-ec0f-4f1f-8ead-05ffeac36426",
            "answerText":"Yes",
            "isCorrect":true

        },
        {
            "id":"00545a13-212b-46a5-9d06-3f6abbb9f1d8",
            "answerText":"Yes",
            "isCorrect":true
        }
    ]
}

并将其作为响应接收:

{
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "Bad Request",
    "status": 400,
    "traceId": "8000005f-0001-ff00-b63f-84710c7967bb"
}

我已经包含了 Content-Type。GlobalConstants.RouteConstants.ApiRoute = "api/" GlobalConstants.RouteConstants.PostSolve = "Solve" 这是我的控制器:


    [Route(GlobalConstants.RouteConstants.ApiRoute)]
    [ApiController]
    public class ESchoolController : ControllerBase
    {
        protected IApiService ApiService { get; set; }

        public ESchoolController(IApiService apiService)
        {
            this.ApiService = apiService;
        }

        //POST: api/Solve
        [HttpPost]
        [Route(GlobalConstants.RouteConstants.PostSolve)]
        public IActionResult Solve([FromBody]ExamApiSolveInputModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return this.BadRequest();
            }

            try
            {
                var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
                var result = this.ApiService.SolveExam(model, userId);
                return this.Ok(result);
            }
            catch (Exception e)
            {
                return this.BadRequest(e.Message);
            }
        }
    }

这是我的输入模型:

    public class ExamApiSolveInputModel
    {
        public ExamApiSolveInputModel()
        {
            this.SelectedAnswers = new List<AnswerApiInputModel>();
        }

        public string ExamId { get; set; }

        public ICollection<AnswerApiInputModel> SelectedAnswers { get; set; }
    }

    public class AnswerApiInputModel
    {
        public string Id { get; set; }

        public string AnswerText { get; set; }

        public bool IsCorrect { get; set; }
    }

我一直在寻找解决方案,但没有成功。我尝试了一些类似的东西:

  1. 当我提出请求时,它没有进入控制器。我已经用调试器检查过了。
  2. 制作另一个 post 方法,但它再次没有通过调试器输入代码,所以我认为问题不在代码中。

任何想法如何解决这个问题?非常感谢,节日快乐!

标签: c#asp.net.net

解决方案


services.AddMvc(options => services.AddMvc(options => options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute()));Startup.cs文件中删除了,问题就消失了!


推荐阅读