none
asp.net core 5 api 404, 同一个项目,两个控制器,一个正常,另一个一直404,请问有人能帮解答吗? RRS feed

  • 问题

  • 如题。跨域已设置在控制器基类。 同样的而命名空间。为了减少阅读量,方法体里面的内容删掉了,里面内容不会报错,就是简单的接收参数返回参数。

    访问的url是:https://localhost:44376/api/b/a

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using DBLayer;
    using DBLayer.InterFace.Models;
    using Microsoft.AspNetCore.Authorization;
    using Microsoft.AspNetCore.Cors;
    using Microsoft.AspNetCore.Http;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.EntityFrameworkCore;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Logging;
     [Route("api/[controller]/[action]")]
     [ApiController]
     public abstract class b: MyControllerBaseController
     {
        [HttpPost]
        public IActionResult a([FromBody] Guid id)
        {}
     }

    这个一直404,用Postman测试,传入的方式和参数一样。

    另外这个就成功:

    访问url是: https://localhost:44376/api/home/test

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using DBLayer;
    using DBLayer.InterFace;
    using Microsoft.AspNetCore.Authorization;
    using Microsoft.AspNetCore.Http;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.EntityFrameworkCore;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Logging;
     [Route("api/[controller]/[action]")]
     [ApiController]
     public class HomeController : MyControllerBaseController
     {
            [HttpPost]
            public JsonResult Test([FromBody] Guid obj)
            {}
     }

     请问有人能帮解答吗?

    2021年8月30日 3:50

答案

  • 您好,

    您的错误原因在于您使用了抽象控制器.这是不对的.我建议您可以使用派生类.

    例如:

    public abstract class b: MyControllerBaseController {  [HttpPost]
        public IActionResult a([FromBody] Guid id)
        {} } public class ba: b {

    [HttpPost] public string test() { return xxx; } }


    访问的url为:https://localhost:44376/api/ba/test

    • 已标记为答案 sosolin 2021年8月30日 8:19
    2021年8月30日 8:01

全部回复

  • 您好,

    您的错误原因在于您使用了抽象控制器.这是不对的.我建议您可以使用派生类.

    例如:

    public abstract class b: MyControllerBaseController {  [HttpPost]
        public IActionResult a([FromBody] Guid id)
        {} } public class ba: b {

    [HttpPost] public string test() { return xxx; } }


    访问的url为:https://localhost:44376/api/ba/test

    • 已标记为答案 sosolin 2021年8月30日 8:19
    2021年8月30日 8:01
  • 是的,谢谢你。刚刚我也通过路由匹配查原因发现找不到终结点,检查才发现使用了abstract 标记了控制器,不知道什么时候因为什么想法弄上去的 ,苦笑
    2021年8月30日 8:19