我似乎无法使用nuget包Microsoft.AspNet.WebApi.Versioning.ApiExplorer来使WebApi URI版本正常工作。
我相信我已经按照文档中的说明进行了仔细检查,但是对版本进行了忽略。我显然缺少基本的东西。
在Visual Studio中,我已经安装了nuget包(例如https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Versioning.ApiExplorer)
我在这里遵循了ASP.NET Web Api的快速入门:https://github.com/Microsoft/aspnet-api-versioning/wiki/New-Services-Quick-Start
由于我希望在URL路径中使用版本控制,因此请遵循以下说明:https://github.com/Microsoft/aspnet-api-versioning/wiki/Versioning-via-the-URL-Path
这给了我一个如下的WebApiConfig.cs配置:
public static class WebApiConfig
{
public static void Configuration(HttpConfiguration configuration)
{
configuration.AddApiVersioning();
var constraintResolver = new DefaultInlineConstraintResolver()
{
ConstraintMap =
{
["apiVersion"] = typeof( ApiVersionRouteConstraint )
}
};
configuration.MapHttpAttributeRoutes(constraintResolver);
configuration.AddApiVersioning();
}
//...
据我了解,我现在应该能够如下所示装饰控制器,以实现如下所示的版本控制网址:http://localhost:8912/api/v1.1/auth/getall
[ApiVersion("1.0")]
[ApiVersion("0.9", Deprecated = true)]
[RoutePrefix("api/auth")]
public class AuthController : ApiController
{
// GET api/values
[SwaggerOperation("GetAll")]
[HttpGet, MapToApiVersion("1.0")]
[Route("GetAll")]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
但是,出现“找不到资源”错误。
当我访问http://localhost:8912/api/auth/getall时,一切正常。
我想知道这是否与我有关:
[RoutePrefix("api/auth")]
但是,如果没有这一点,我似乎无法获得任何工作途径。