当我向远程ASP.NET WebAPI
发布IIS Server
解决方案时,收到错误消息:
消息:System.ArgumentException:名为' DefaultRoute'的路由。已经在路线集合中。路线名称必须是唯一的。
我看到this线程有同样的问题,但没有任何内容有效。我试过了:
无论如何,我可以找出是否存在陈旧文件。我确实重命名了一些文件,我听说这会导致问题吗?
不确定这是否重要,但我使用ASP.NET WebApi和RestSharp进行休息调用。
这是我的Global.asax startup
所拥有的:它是多余的吗?
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
RouteConfig.RegisterRoutes(RouteTable.Routes);
答案 0 :(得分:9)
我遇到了已设置路线的类似问题。对我来说,解决方案就在这里:https://stackoverflow.com/a/28503674/1496138。 问题是我后来重命名了项目文件 - 以前名称的旧DLL文件仍然存在于/ bin目录中,并且自动启动配置也运行它们。
答案 1 :(得分:1)
路由通常配置为三个位置之一。 global.asax文件,RouteConfig.cs文件(通常位于/ App_Start或{areaname} AreaRegistration.cs文件中,位于/ Areas / {areaname}中。在这些位置必须有重复的路由名称。它给你重复的名称,尝试在项目中搜索“DefaultRoute”,它可能会跳出来。更改其中一个的名称,它应该可以解决你的问题。
答案 2 :(得分:1)
当我使用RouteAttribute
显式设置路由名称的代码时,我遇到了这个错误,当我尝试设置一个路由时,根据是使用HTTP GET还是HTTP POST调用它会采用不同的参数:
[HttpGet]
[Route("MyApiMethod", Name = "MyApiMethod")]
public MyApiMethod PropertyData(...)
{
...
}
// ERROR: Causes "System.ArgumentException: A route named 'DefaultRoute' is already in the route collection. Route names must be unique."
[HttpPost]
[Route("MyApiMethod", Name = "MyApiMethod")]
public MyApiMethod PropertyData(...)
{
...
}
这对我来说并不是很明显,但问题结果正是错误信息所说的:我有两条路径具有相同的Name
值。只需将这些Name
值更改为唯一(无需更改路径本身或方法签名)即可修复此问题:
[HttpGet]
[Route("MyApiMethod", Name = "MyApiMethod-GET")]
public MyApiMethod PropertyData(...)
{
...
}
[HttpPost]
[Route("MyApiMethod", Name = "MyApiMethod-POST")]
public MyApiMethod PropertyData(...)
{
...
}
答案 3 :(得分:0)
两次你被定义了。
<强> AreaRegistration.RegisterAllAreas(); 强>
答案 4 :(得分:0)
我有同样的问题。如果您使用IIS 8.X,则应检查新功能。
希望这有帮助。
答案 5 :(得分:0)
再次清洗SOlution并重建!
它解决了我的问题
答案 6 :(得分:0)
清理解决方案/项目对我不起作用。我最终导航到bin目录并删除了该目录中的所有文件,因为这绝对是一团糟,并且为我解决了这个问题。