This question may seems duplicate but this is slightly different. In all other question in SO I had noticed that they have multiple routes registered. but in my case I have just one route.
I am creating asp.net webapi (framework 4.5) and have just one route in RegisterRoutes() method -
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "DefaultApi",
url: "rest/{controller}/{id}",
defaults: new { id = UrlParameter.Optional }
);
}
Then why is it throwing error?
A route named 'DefaultApi' is already in the route collection. Route names must be unique. Parameter name: name
If you are using MVC4 or MVC5 application. Then put your Route Configuration in
WebApiConfig.cs and
also check route name should be unique in both files i.e RouteConfig.cs and WebApiConfig.cs
I had a similar issue with adding a route
DefaultApi
. Though the exact 'additional details' message in myArgumentException
stack trace was:I ofcourse made sure I was adding the
DefaultApi
route only once, but in the end noticed that inGlobal.asax
'sApplication_Start
method I was calling theWebApiConfig.Register(..)
twice, though in the following - not immediately obvious - way:Another serious case of 'copypasterites'! I simply removed the
WebApiConfig.Register(..)
line and that fixed my issue.(I am using WEB API 2.0/.NET 5)
I see that you call the controller but you do not give the controller name like this:
that means you regist HomeContrller for the Index view,
Fine, I resolved it based on the reply by user3038092. Instead of adding it in the route collection, I added it in HttpConfiguration
And it worked.
CAUSE: renaming namespaces without removing associated bin and output files.
SOLUTION: manually delete the bin and obj folders from the output directory. (cleaning the solution is not enough, some problematic residual files remain causing this problem.)
... that was my experience anyway.