Sebazzz/SDammann.WebApi.Versioning

Multiple actions were found that match the request

Closed this issue · 2 comments

Hi everybody!

I did follow all tutorial before started implementing. I'm getting an error after did versioning implementation. I have routes declared as below:

image

I also added at Global.asax.cs

image

My controllers' namespace:

image

I'm accessing my url like this http://localhost:57003/api/v1/Swagger
Could it be a bug from WebApi.Versioning?

I'm out of office but I did some tests today. I recreated all routes based on those below and got it worked. I'll test it out at my office on monday.

           config.Routes.MapHttpRoute(
                name: "DefaultVersioningApi",
                routeTemplate: "api/v{version}/{controller}/{action}");                

            config.Routes.MapHttpRoute(
                name: "DefaultVersioningApiWithAction",
                routeTemplate: "api/v{version}/{controller}/{action}/{id}",
                defaults: new {id = RouteParameter.Optional});

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

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

As I was expecting it has worked nicely! Closing this "issue".

            config.Routes.MapHttpRoute("DefaultVersioningApiGet",
                "api/v{version}/{controller}",
                new { action = "Get" },
                new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) });

            config.Routes.MapHttpRoute("DefaultVersioningApiPost",
                "api/v{version}/{controller}",
                new { action = "Post" },
                new { httpMethod = new HttpMethodConstraint(HttpMethod.Post) });

            config.Routes.MapHttpRoute(
                name: "DefaultVersioningApi",
                routeTemplate: "api/v{version}/{controller}");

            config.Routes.MapHttpRoute(
                name: "DefaultVersioningApiWithAction",
                routeTemplate: "api/v{version}/{controller}/{action}",
                defaults: new { action = "Get" });

            config.Routes.MapHttpRoute(
                name: "DefaultVersioningApiWithActionAndId",
                routeTemplate: "api/v{version}/{controller}/{action}/{id}",
                defaults: new { action = "Get", id = RouteParameter.Optional });

            config.Routes.MapHttpRoute("DefaultApiGet",
                "api/{controller}",
                new { action = "Get" },
                new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) });

            config.Routes.MapHttpRoute("DefaultApiPost",
                "api/{controller}",
                new { action = "Post" },
                new { httpMethod = new HttpMethodConstraint(HttpMethod.Post) });

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}");

            config.Routes.MapHttpRoute(
                name: "DefaultApiWithAction",
                routeTemplate: "api/{controller}/{action}",
                defaults: new { action = "Get" });

            config.Routes.MapHttpRoute(
               name: "DefaultApiWithActionAndId",
               routeTemplate: "api/{controller}/{action}/{id}",
               defaults: new { action = "Get", id = RouteParameter.Optional });