简单 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(); 添加到 RegisterRoutesRouteConfig

这样做之后,我仍然可以访问/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 - 未找到的主要内容,如果未能解决你的问题,请参考以下文章

Mvc-WebAPI特性路由(自定义路由)Demo

Sitecore 7.5 的 MVC 检测和 WebApi 属性路由

如何正确调用 ASP .NET MVC WebAPI 2 方法

你能用参数做一些像RoutePrefix这样的事情吗?

在webAPI的BaseController上使用RoutePrefix

WebAPI 2参数绑定方法