2017-01-02 125 views
3

創建在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,什麼是問題?

回答

5

您已經在控制器類的頂部包含了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(); 
    } 
} 

您還需要爲方法使用不同的路由名稱。 希望這有助於。