Asp.net-Web-Api

ASP.NET Core WebAPI 404 錯誤

  • January 2, 2017

我在 asp.net 核心中創建了一個 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通過瀏覽器或郵遞員,通過這個 url呼叫時http://localhost:14742/api/Blog/GetAllBlog,它讓我知道404 error,有什麼問題?

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

您還需要為方法使用不同的路由名稱。希望這可以幫助。

引用自:https://stackoverflow.com/questions/41422325