名为' DefaultRoute'的路线已经在路线集合中。路线名称必须是唯一的

时间:2015-01-28 14:53:55

标签: c# asp.net-mvc iis asp.net-web-api restsharp

当我向远程ASP.NET WebAPI发布IIS Server解决方案时,收到错误消息:

  

消息:System.ArgumentException:名为' DefaultRoute'的路由。已经在路线集合中。路线名称必须是唯一的。

我看到this线程有同样的问题,但没有任何内容有效。我试过了:

  1. 删除所有项目中的所有bin / obj文件夹。
  2. 清洁/重建
  3. 发布前从远程服务器删除文件
  4. 重命名项目
  5. 无论如何,我可以找出是否存在陈旧文件。我确实重命名了一些文件,我听说这会导致问题吗?

    不确定这是否重要,但我使用ASP.NET WebApi和RestSharp进行休息调用。

    这是我的Global.asax startup所拥有的:它是多余的吗?

    AreaRegistration.RegisterAllAreas();
    WebApiConfig.Register(GlobalConfiguration.Configuration);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    

7 个答案:

答案 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)

  1. 检查Global.asax
  2. 两次你被定义了。

    <强> AreaRegistration.RegisterAllAreas();

    1. 卸载项目并重新加载项目。

答案 4 :(得分:0)

我有同样的问题。如果您使用IIS 8.X,则应检查新功能。

  1. 您的应用程序池启动模式应在高级设置中“AlwaysRunning”
  2. 您的应用已启用预加载应在高级设置中设为“True”
  3. 希望这有帮助。

答案 5 :(得分:0)

再次清洗SOlution并重建!

它解决了我的问题

答案 6 :(得分:0)

清理解决方案/项目对我不起作用。我最终导航到bin目录并删除了该目录中的所有文件,因为这绝对是一团糟,并且为我解决了这个问题。