2017-01-02 5 views
3

ich eine Web-Api in asp.net Kern dieser der Inhalt von Api:ASP.NET Core-WebAPI 404 Fehler

[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(); 
    } 


    } 

wie ich weiß, in ASp.net Core (WebAPI Template) brauchen wir nicht jede Konfiguration wie Registrierung Route, die wir in Asp.net Mvc 5.3 und älter benötigen.

Also wenn ich versuche, die GetAllBlog per Browser oder Postman, durch diese URL http://localhost:14742/api/Blog/GetAllBlog, ruft es mich 404 error, was ist das Problem?

Antwort

5

Sie haben die api/[controller] route bereits oben in der Controller-Klasse eingefügt, so dass Sie sie nicht erneut hinzufügen müssen, wenn Sie die Route für den Zugriff auf die Methode definieren. Im Wesentlichen ändern Sie die Route zu api/Blog/GetAllBlog zu GetAllBlog. Ihr Code sollte wie folgt aussehen:

[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(); 
    } 
} 

Sie müssen auch verschiedene Routennamen für Methoden haben. Hoffe, das hilft.

Verwandte Themen