名为“DefaultApi”的路径已在路径集合中
这个问题可能看似重复,但这有点不同。 在SO的所有其他问题中,我注意到他们注册了多条路线。 但就我而言,我只有一条路线。
我正在创建asp.net webapi(框架4.5)并且在RegisterRoutes()方法中只有一个路由 –
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "DefaultApi", url: "rest/{controller}/{id}", defaults: new { id = UrlParameter.Optional } ); }
那为什么会抛出错误?
A route named 'DefaultApi' is already in the route collection. Route names must be unique. Parameter name: name
我在添加路由DefaultApi
遇到了类似的问题。 虽然我的ArgumentException
堆栈跟踪中的确切“附加详细信息”消息是:
A route named 'MS_attributerouteWebApi' is already in the route collection. Route names must be unique.
我当然确定我只添加了一次DefaultApi
路由,但最后注意到在Global.asax
的Application_Start
方法中,我两次调用WebApiConfig.Register(..)
,但在下面 – 不是很明显 – 方式:
WebApiConfig.Register(GlobalConfiguration.Configuration); GlobalConfiguration.Configure(WebApiConfig.Register);
另一个严重的’copypasterites’案例! 我只是删除了WebApiConfig.Register(..)
行,这解决了我的问题。
(我使用的是WEB API 2.0 / .NET 5)
原因:重命名命名空间而不删除关联的bin和输出文件。
SOLUTION:手动删除输出目录中的bin和obj文件夹。 (清理解决方案是不够的,一些有问题的残留文件仍会导致此问题。)
……无论如何,那是我的经历。
好的,我根据user3038092的回复解决了这个问题。 我在HttpConfiguration中添加了它,而不是在路径集合中添加它
config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "rest/{controller}/{id}", defaults: new { id = RouteParameter.Optional } );
它奏效了。
如果您使用的是MVC4或MVC5应用程序。 然后将您的路由配置放入
WebApiConfig.cs和
检查路由名称在两个文件中应该是唯一的,即RouteConfig.cs和WebApiConfig.cs
我看到你调用控制器,但你没有像这样给出控制器名称:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "DefaultApi", url: "rest/{controller}/{id}", defaults: new { controller="Home",action="Index",id = UrlParameter.Optional } ); }
这意味着您为Index视图注册HomeContrller,