繁体   English   中英

在ASP .NET WEB API中使用属性路由进行版本控制

[英]Versioning using Attribute Routing in ASP .net WEB API

我正在尝试使用WEB API中的AttributeRouting实现版本控制。 我在控制器下定义了两个文件夹,分别称为v1和v2。 每个文件夹中都有多个控制器。 在产品控制器中,我定义了

RoutePrefix分别为[RoutePrefix(“ v1 / product”)]和[RoutePrefix(“ v2 / product”))

当我转到URI v1 / product时,它可以正常工作,但是v2 / product也执行v1文件夹中的代码。 属性路由是否支持版本控制,还是必须执行与路由相关的操作。 我的路线定义为

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

我的产品控制器看起来像

namespace API.Controllers
{

[RoutePrefix("v1/product")] 

public class Productv1Controller : ApiController

{

    private DBContext db = new DBContext(); 


    public dynamic Get()
    {
       //Gets the Products
    }
}

V2产品中的代码是

namespace API.Controllers
{

[RoutePrefix("v2/product")] 

public class Productv2Controller : ApiController

{

    private DBContext db = new DBContext(); 


    public dynamic Get()
    {
       //Gets the Products
    }
}

有人可以建议或提供示例链接以使用属性路由实现版本控制吗?

您需要使用Route属性来装饰动作,以使其起作用。

[Route] public dynamic Get() ...

另外,您还需要config.MapHttpAttributeRoutes(); 在WebApiConfig的Register方法中

更新

这是要点的链接,我使用WebApi 5在新的Web应用程序中对此进行了测试,并且可以正常工作。 https://gist.github.com/DavidDeSloovere/11367286

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM