ASP.NET核心的WebAPI 404错误

问题描述:

创建在asp.net核心这个API的内容的Web API:ASP.NET核心的WebAPI 404错误

[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核心(的WebAPI模板)知道我们不需要像注册路由的任何配置,我们需要在Asp.net Mvc 5.3及更高版本中使用。

因此,当我尝试通过浏览器或邮递员拨打GetAllBlog,通过此URL http://localhost:14742/api/Blog/GetAllBlog,它得到我404 error,什么是问题?

您已经在控制器类的顶部包含了api/[controller]路由,因此在定义访问方法的路由时不需要再包含它。 实质上,将Route更改为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(); 
    } 
} 

您还需要为方法使用不同的路由名称。 希望这有助于。