ASP.NET Versioning Libraryを使用しています。手順に従って、このライブラリを非常に基本的な ASP.NET Web API 2 プロジェクトに追加しました。ファイルの内容は次のとおりです:
Global.asax
ファイル:
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
}
}
Web API 構成:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.AddApiVersioning(c => c.AssumeDefaultVersionWhenUnspecified = true);
}
}
最初のコントローラー:
namespace WebApplication5.Controllers
{
[ApiVersion("1.0")]
[RoutePrefix("api1")]
public class ValuesController : ApiController
{
[Route("values")]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
[Route("values/{id}")]
public string Get(int id)
{
return "value";
}
}
}
2 番目のコントローラー:
namespace WebApplication5.Controllers
{
[ApiVersion("2.0")]
[RoutePrefix("api1")]
[ControllerName("Values")]
public class ValuesController2 : ApiController
{
[Route("values")]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
[Route("values/{id}")]
// GET api/values/5
public string Get(int id)
{
return "value";
}
}
}
アプリケーションを実行してこの URL に移動するとhttp://localhost:5428/api1/values?api-version=1.0
、目的の結果が得られますが、この URL に移動すると、次http://localhost:5428/api1/values?api-version=2.0
のエラー メッセージが表示No route providing a controller name with API version '2.0' was found to match request URI 'http://localhost:5428/api1/values'
されます。
[ControllerName]
何も変更せずに属性を削除ValuesController2
すると、問題が解決しません。
2番目のコントローラーの名前空間を変更しようとしましたが、問題も解決しませんでした!
このライブラリのバージョン3.0.1を使用しています。