2017-01-02 16 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(); 
    } 
} 

また、メソッドには別のルート名が必要です。 これが役立つことを願っています。

関連する問題