Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web API 2中的版本控制_C#_Asp.net Mvc - Fatal编程技术网

C# Web API 2中的版本控制

C# Web API 2中的版本控制,c#,asp.net-mvc,C#,Asp.net Mvc,有一个关于WebAPI2.0版本控制的快速问题 我已经开发了一个完全RESTful的API,但是我有两个同名的控制器 我将它们按照不同的文件夹放在不同的名称空间中。 (例如v1和v2文件夹) 我还使用普通的NamespaceHttpControllerSelector配置了正确的路由。 所以到目前为止,一切都正常工作 然而,我有一个问题…即使我将EmailsController放在根级别,是否仍然可以对Emails控制器进行版本控制 例如 控制器/v1/EmailControllers 控制器

有一个关于WebAPI2.0版本控制的快速问题

我已经开发了一个完全RESTful的API,但是我有两个同名的控制器

我将它们按照不同的文件夹放在不同的名称空间中。 (例如v1和v2文件夹)

我还使用普通的NamespaceHttpControllerSelector配置了正确的路由。 所以到目前为止,一切都正常工作

然而,我有一个问题…即使我将EmailsController放在根级别,是否仍然可以对Emails控制器进行版本控制

例如

控制器/v1/EmailControllers

控制器/电子邮件控制器

这还可能吗

编辑:

我忘了提到我没有使用
RoutePrefix
属性,因为我一直在
RouteConstraint
上接收错误

我用以下内容装饰了我的操作方法(这似乎有点多余,因为它们基本上具有相同的名称空间):


[路由(“api/{apiVersion1:ApiVersion1Constraint(v1)}/emails/LogEmails”,Name=“LogEmailsRoute_1”)]
您应该在控制器上使用
RoutePrefix
属性。
更多信息。

您是否尝试过使用[ApiVersion]属性

    [ApiVersion( "1.0", Deprecated = true )]    
    [ApiVersion( "2.0" )]
    [ApiVersion( "3.0" )]
    [Route( "api/v{version:apiVersion}/email" )]
    public class Email2Controller : Controller {

    [HttpGet]
    public string Get() => "Email  v2!";

    [HttpGet, MapToApiVersion( "3.0" )]
    public string GetV3() => "Email v3!";

    }

谢谢你的回复。我的第一个意图是在控制器级别使用
RoutePrefix
属性。尽管如此,我还是收到了许多错误,说明我的路线约束不起作用。不过,我会检查这个链接。不久前,我用一个路由控制器解决了这个问题。但是谢谢你的回复。