简单 MVC RoutePrefix - HTTP 错误 404.0 - 未找到
Posted
技术标签:
【中文标题】简单 MVC RoutePrefix - HTTP 错误 404.0 - 未找到【英文标题】:Simple MVC RoutePrefix - HTTP Error 404.0 - Not Found 【发布时间】:2014-11-02 06:46:57 【问题描述】:我已经编码了一个API controller
,我希望在这个控制器中添加一个RoutePrefix
。
我的控制器名称是MapCompanyController
,这个控制器有一个方法叫做GetMapCompany
。
目前,我可以通过调用以下网址访问该方法:/api/MapCompany/GetMapCompany
我想添加一个RoutePrefix
,这样这个方法的路径就是:/api/1_0/MapCompany/GetMapCompany
这就是我所做的:
-
我已将
[RoutePrefix("1_0")]
添加到MapCompanyController
我已将routes.MapMvcAttributeRoutes();
添加到
RegisterRoutes
RouteConfig
这样做之后,我仍然可以访问/api/MapCompany/GetMapCompany
地址的方法,而/api/1_0/MapCompany/GetMapCompany
执行如下错误:
HTTP Error 404.0 - Not Found
我可以就这段代码寻求帮助吗?
提前致谢
编辑
我创建了一个简单的控制器如下:
public class TestRouteController : ApiController
// GET: api/TestRoute/5
public string Get(int id)
return "value";
要访问Get
函数,下面的url是正确的:
api/TestRoute/5
如果我将代码更改如下:
public class TestRouteController : ApiController
// GET: api/TestRoute/5
[Route("routetest")]
public string Get(int id)
return "value";
Get
函数的路径是什么?
我尝试了以下方法:
-
/api/TestRoute/5
/api/routetest/5
/routetest/api/TestRoute/5
/api/TestRoute/routetest/5
【问题讨论】:
【参考方案1】:如果这真的是一个 ApiController 这应该用 WebApiConfig 而不是 RouteConfig 注册:
public static class WebApiConfig
public static void Register(HttpConfiguration config)
config.MapHttpAttributeRoutes();
然后在你的 global.asax 中:
GlobalConfiguration.Configure(WebApiConfig.Register);
MVC 和 WebApi 中的路由是不同的
编辑: 在 webapi 中为您的控制器和方法定义路由很简单,您只需向控制器类添加一个 RoutePrefix 属性,然后您可以向您的方法添加或不添加 Route 属性:
[RoutePrefix("api/TestRoute")]
public class TestRouteController : ApiController
[Route("testroute")]
[HttpGet()]
public string Get(int id)
return "value";
这样路由应该是 api/TestRoute/testroute?id=whatever
RouteConfig 用于 mvc "Controller",对于 webApi "ApiController" 只需像上面一样注册路由并用属性定义它们,不需要模糊 RouteConfig :)
【讨论】:
我已经按照您的建议完成了,但到控制器的路由仍然相同,无需更改访问 API 控制器所需的网址。 你能看看我的简单例子吗?当使用路由前缀时,我不确定到达函数的路径。以上是关于简单 MVC RoutePrefix - HTTP 错误 404.0 - 未找到的主要内容,如果未能解决你的问题,请参考以下文章
Sitecore 7.5 的 MVC 检测和 WebApi 属性路由
如何正确调用 ASP .NET MVC WebAPI 2 方法