2

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を使用しています。

4

2 に答える 2