Apathnamed"DefaultApi"isalreadyinapathcollection这道题看似重复,其实有点不同。在关于SO的所有其他问题中,我注意到他们注册了多条路线。但就我而言,我只有一条路线。我正在创建asp.netwebapi(框架4.5)并且在RegisterRoutes()方法中只有一条路线-publicstaticvoidRegisterRoutes(RouteCollectionroutes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute(name:"DefaultApi",url:"rest/{controller}/{id}",defaults:new{id=UrlParameter.Optional});那么为什么会抛出错误呢?路由集合中已存在名为“DefaultApi”的路由。路由名称必须是唯一的。参数名称:名称我在添加路由DefaultApi时遇到了类似的问题。虽然我的ArgumentException堆栈跟踪中的确切“其他详细信息”消息是:名为“MS_attributerouteWebApi”的路由已存在于路由集合中。路由名称必须是唯一的。我确定我只添加了一次DefaultApi路由,但最后注意在Global.asax的Application_Start方法中,我调用了WebApiConfig.Register(..)两次,但在以下-不明显-方式中:WebApiConfig.Register(GlobalConfiguration.Configuration);GlobalConfiguration.Configure(WebApiConfig.Register);另一个严重的“抄袭者”案例!我刚刚删除了WebApiConfig.Register(..)行,这解决了我的问题。(我正在使用WEBAPI2.0/.NET5)原因:重命名命名空间而不删除关联的bin和输出文件。解决方案:手动删除输出目录中的bin和obj文件夹。(清理解决方案是不够的,一些有问题的剩余文件仍然会导致问题。)...无论如何,这是我的经验。好的,我根据user3038092的回复解决了问题。我将它添加到HttpConfiguration而不是路由集合中它奏效了。如果您使用的是MVC4或MVC5应用程序。然后将你的路由配置放入WebApiConfig.cs并检查路由名称在两个文件中应该是唯一的,即RouteConfig.cs和WebApiConfig.cs我看到你正在调用控制器但你没有给控制器这样的名称:publicstaticvoidRegisterRoutes(RouteCollectionroutes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute(name:"DefaultApi",url:"rest/{controller}/{id}",defaults:new{controller="Home",action="Index",id=UrlParameter.Optional});}这意味着你为Index视图注册了HomeController,以上是C#学习教程:名为“DefaultApi”的路径,共享了路径集合中的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
