为什么我发布我的API应用程序后,“路由集合中已经有一条名为'swagger_docs'的路径”?

azure asp.net-web-api azure-web-sites

8460 观看

4回复

1803 作者的声誉

发布我的API应用程序后,我得到了ASP.NET的黄色错误屏幕。错误消息显示“名为'swagger_docs'的路径已经在路径集合中”。

我怎样才能解决这个问题?

作者: Panagiotis Kefalidis 的来源 发布者: 2015 年 4 月 3 日

回应 (4)


37

1803 作者的声誉

这与API应用程序本身无关,但与Web API有关。触发错误的原因很简单:

  1. 您发布了基于Web API的API App。
  2. 您丢弃项目并开始使用基于Web API的新API应用程序
  3. 您希望发布新的API应用程序,而不是您在步骤1中创建的旧API应用程序。
  4. 您在“发布...”期间选择了API应用程序,并获得了我们在步骤1中部署的现有API应用程序的发布配置文件。
  5. 您使用Web Deploy和发布配置文件进行部署,新的API应用程序位于旧的API应用程序之上。

这将引发我之前解释过的问题。这是因为当您尝试启动应用程序时,Swashbuckle会注册两条路由。旧的一个和新的一个。那是因为旧文件仍然存在于目的地。

要解决此问题,请在Web部署期间单击“设置”选项卡,然后展开“文件发布选项”。那里有一个复选框,名为“从目的地删除其他文件”。这将解决问题,因为它只会留下您在目的地部署的文件而不是旧文件。

设置 - >文件发布选项

希望能帮助到你。

作者: Panagiotis Kefalidis 发布者: 03.04.2015 09:10

9

91 作者的声誉

如果尝试在本地调试应用程序时会发生什么?这件事发生在我身上,原因是,我改名为我的集会名称。所以bin文件夹有两个dll用于同一项目,具有不同的名称导致此错误。一旦我删除了旧的名为dll一切都很好。希望这可以帮助。

作者: Venu 发布者: 17.01.2017 07:18

4

71 作者的声誉

发生这种情况是因为您在WebApiConfig类 SwaggerConfig类中正在配置路由,如下所述:

WebApiConfig文件:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        SwaggerConfig.Register();
    }
}

SwaggerConfig文件:

using Swashbuckle.Application;

[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]

namespace NEOH.Api
{
    public class SwaggerConfig
    {
        public static void Register()
        {

你应该做的是删除SwaggerConfig文件上的程序集调用。

它应该工作。

作者: Sales Lopes 发布者: 26.09.2017 12:09

0

1983 作者的声誉

这个问题的另一个原因:

似乎很多人通过删除其他答案中的“bin”和“obj”文件夹来解决此问题。

但是问题的原因可能是您在引用的项目中配置Swagger配置,根据以下注释:https//github.com/domaindrivendev/Swashbuckle/issues/364#issuecomment-226013593

当Swagger的一个项目使用Swagger引用另一个项目时,我收到此错误。删除引用修复了问题。

这导致我将一些核心功能拆分为我的两个API都可以引用的第三个项目,而不是它们相互引用。

作者: Morvael 发布者: 21.05.2019 08:25
32x32