C# ASP.NET Web API文档重复条目

C# ASP.NET Web API文档重复条目,c#,asp.net-web-api,swagger,C#,Asp.net Web Api,Swagger,我正在尝试为我的API创建文档。到目前为止,我已经试过了 这两个工具都为我提供了从XML生成的正确文档,但它们都向我显示了重复的条目。我假设这与我的路由配置有关: config.Routes.MapHttpRoute( name: "Sample1", routeTemplate: "sample1/{controller}/{id}", defaults: new { id = RouteParameter.Optional }); config.Routes.MapHtt

我正在尝试为我的API创建文档。到目前为止,我已经试过了

这两个工具都为我提供了从XML生成的正确文档,但它们都向我显示了重复的条目。我假设这与我的路由配置有关:

config.Routes.MapHttpRoute(
   name: "Sample1",
   routeTemplate: "sample1/{controller}/{id}",
   defaults: new { id = RouteParameter.Optional });

config.Routes.MapHttpRoute(
   name: "Sample2",
   routeTemplate: "sample2/{controller}/{id}",
   defaults: new { id = RouteParameter.Optional });
我看到的是来自Sample1和Sample2的方法,类似这样:

../sample1/method1
../sample1/method2

../sample2/method1
../sample2/method2
我想要这个:

../sample1/method1

../sample2/method2

有什么想法吗?

根据您上次的评论,您可以通过设置路线约束来实现这一点,并期望帮助页面正确显示。示例如下:

config.Routes.MapHttpRoute(
            name: "AdminRoute",
            routeTemplate: "api/folder1/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional },
            constraints: new { controller = "Roles|Users" }
        );

        config.Routes.MapHttpRoute(
            name: "RegularRoute",
            routeTemplate: "api/folder2/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional },
            constraints: new { controller = "Products|Reviews" }
        );

注意:如果您试图将文件夹设置为路由变量,则HelpPage将无法显示帮助文档。

我对您的帖子有点困惑。你能详细说明为什么这里有两条看起来相似的路线吗?比如你的情况是什么?另外,当你说
/sample1/method1
,是
sample1
控制器还是
method1
控制器……在任何情况下,帮助页面的工作方式是,它迭代路由集合中的每个路由,并获取从该路由可以访问的所有控制器和操作……哦,对不起,没有很好地解释
sample1
sample2
是控制器下的子文件夹,因此我配置了两条路由。我猜正因为如此,HelpPage在所有api控制器中迭代了两次。所以问题是如何区分这些子文件夹中的控制器,而不显示重复的方法?