运行WebAPI的路径

时间:2017-05-18 16:43:22

标签: c# asp.net-mvc asp.net-web-api asp.net-web-api-routing

我很难用浏览器或PostMan运行API。问题是路径,所以我得到404错误。

这是路径:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

WebAPIConfig:

public static void Register(HttpConfiguration config)
{
    config.EnableCors();

    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "v{version}/{controller}/{action}/{id}",
        defaults: new {id = RouteParameter.Optional});

    config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

    config.MessageHandlers.Add(new AuthHandler());
}

这是我需要运行的控制器方法:

public class BankViewerController : ApiController
{
    [HttpGet]
    public List<BuilderList> GetBuilderList()
    {
        //......
    }
}

我尝试的路径是:

http://localhost:62815/BankViewerController/GetBuilderList

它甚至没有到达方法的第一行,它给了我404错误,所以我很确定它是Path。

1 个答案:

答案 0 :(得分:3)

给定路线模板:

routeTemplate: "v{version}/{controller}/{action}/{id}",

您调用了与模板

不匹配的错误网址
http://localhost:62815/BankViewerController/GetBuilderList

你需要像

这样的东西
http://localhost:62815/v1/BankViewer/GetBuilderList

调用URL时从控制器名称中排除Controller。这是一个惯例。