【问题标题】:ASP.NET Core WebAPI 404 errorASP.NET Core WebAPI 404 错误
【发布时间】:2017-05-16 07:04:25
【问题描述】:

我在asp.net core中创建了一个Web Api这个Api的内容:

 [Route("api/[controller]")]
public class BlogController : Controller
{

    public IContext _context { get; set; }
    public BlogController(IContext ctx)
    {
        _context = ctx;
    }

    [HttpGet]
    [Route("api/Blog/GetAllBlog")]
    public List<Blog> GetAllBlog()
    {
        return _context.Blogs.ToList();
    }


   }

据我所知,在 Asp.net Core(WebApi 模板)中,我们不需要像注册路由这样的配置,而在 Asp.net Mvc 5.3 及更早版本中我们需要。

所以当我尝试通过浏览器或邮递员调用GetAllBlog 时,通过此网址http://localhost:14742/api/Blog/GetAllBlog,它让我404 error,有什么问题?

【问题讨论】:

    标签: asp.net-web-api asp.net-core


    【解决方案1】:

    您已经在控制器类的顶部包含了 api/[controller] 路由,因此在定义访问方法的路由时无需再次包含它。 本质上就是将Route to api/Blog/GetAllBlog改为GetAllBlog。您的代码应如下所示:

    [Route("api/[controller]")]
    public class BlogController : Controller
    {
    
        public IContext _context { get; set; }
        public BlogController(IContext ctx)
        {
            _context = ctx;
        }
    
        [HttpGet]
        [Route("GetAllBlog")]
        public List<Blog> GetAllBlog()
        {
            return _context.Blogs.ToList();
        }
    
        [HttpGet]
        [Route("GetOldBlogs")]
        public List<Blog> GetOldBlogs()
        {
            return _context.Blogs.Where(x => x.CreationDate <= DateTime.Now.AddYears(-2)).ToList();
        }
    }
    

    您还需要为方法设置不同的路由名称。 希望这会有所帮助。

    【讨论】:

    • 不使用 [Route] 属性就不能只隐式命名路由吗?
    猜你喜欢
    • 2017-03-28
    • 2013-02-03
    • 2014-01-04
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 2017-04-04
    相关资源
    最近更新 更多