2016-11-07 86 views
1

我的请求正在工作,但它没有进入正确的路线。我不明白为什么。为什么我的请求会出现错误的路线?

我在开始项目时收到了'200 OK'的响应,但它在错误的路线上。

我想路线http://localhost:4047/api/[controller]而是http://localhost:4047/正在工作!没有我指定这条路线的地方。

这里是控制器。

[EnableCors(origins: "*", headers: "*", methods: "*")] 
[Route("api/[controller]")] 
public class MenuController : ApiController 
{ 
    private IMenuRepo xMenuRepo; 
    public MenuController(IMenuRepo iopt) 
    { 
     xMenuRepo = iopt; 
    } 
    [HttpGet] 
    [Route("")] 
    public HttpResponseMessage GetOk() 
    { 
     return new HttpResponseMessage(HttpStatusCode.OK); 
    } 
} 

这里是WebApiConfig

public static void Register(HttpConfiguration config) 
{ 
    // Web API configuration and services 
    config.EnableCors(); 
    // Web API routes 
    config.MapHttpAttributeRoutes(); 

    config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}" 
    ); 
} 

这里是路由配置

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

    routes.MapRoute(
     name: "Default", 
     url: "api/{controller}", 
     defaults: new { controller = "Home" } 
    ); 
} 

至于I C一个告诉,api/Menu应该是正确的路线。

回答

2

是您指定

//GET/
[HttpGet] 
[Route("")] 
public HttpResponseMessage GetOk() 
{ 
    return new HttpResponseMessage(HttpStatusCode.OK); 
} 

控制器需要一个路由前缀的路由,而例如仅指定一个控制器路径。

更改为:

[EnableCors(origins: "*", headers: "*", methods: "*")] 
[RoutePrefix("api/Menu")] 
public class MenuController : ApiController { 
    private IMenuRepo xMenuRepo; 
    public MenuController(IMenuRepo iopt) { 
     xMenuRepo = iopt; 
    } 

    //GET api/Menu 
    [HttpGet] 
    [Route("")] 
    public HttpResponseMessage GetOk() { 
     return new HttpResponseMessage(HttpStatusCode.OK); 
    } 
} 

在OP [Route("api/[controller]")]的语法是asp.net核心

来源:Attribute Routing in ASP.NET Web API 2

+0

我最初做这一切在asp.net核心,并不得不切换。那有道理,为什么它不起作用呢! –

+0

没有工作。 –

+0

什么是错误信息msg – Nkosi

相关问题