为什么我的请求会出现错误的路线?
问题描述:
我的请求正在工作,但它没有进入正确的路线。我不明白为什么。为什么我的请求会出现错误的路线?
我在开始项目时收到了'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
应该是正确的路线。
答
是您指定
//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核心
我最初做这一切在asp.net核心,并不得不切换。那有道理,为什么它不起作用呢! –
没有工作。 –
什么是错误信息msg – Nkosi