我在我的ASP.Net MVC Core项目中安装了Swagger,它正在精美地记录我的API。
我的同事让我在完整的框架4.6.1项目中安装它,所以我已经完成了以下工作。
在Package Console Manager中运行:
Install-Package Swashbuckle
让Test Web API控制器正常工作: 1)在WebApi.config中注释掉它:
// config.SuppressDefaultHostAuthentication();
// config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
现在这个网址: http://localhost:33515/api/Test 带回XML:
<ArrayOfstring xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<string>value1</string>
<string>value2</string>
</ArrayOfstring>
在Global.asax Register()中,我打电话给:
SwaggerConfig.Register();
在AppStart.Swagger.Config Register()中,我把:
public class SwaggerConfig
{
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.SingleApiVersion("v1.0", "HRSA CHAFS");
c.IncludeXmlComments(GetXmlCommentsPath());
})
.EnableSwaggerUi(c =>
{});
}
private static string GetXmlCommentsPath()
{
var path = String.Format(@"{0}bin\Services.XML", AppDomain.CurrentDomain.BaseDirectory);
return path;
}
}
现在我收到此错误: &#34;名为&#39; swagger_docsswagger / docs / {apiVersion}的路线&#39;已经在路线集合中。路线名称必须是唯一的。&#34;
我已经被困在这几个小时了。 你怎么摆脱这个?
答案 0 :(得分:13)
重命名.NET程序集时可能会发生这种情况。具有先前程序集名称的DLL将出现在bin文件夹中。这会导致招摇错误。
删除bin文件夹并重新构建解决方案。 这解决了招摇错误。
答案 1 :(得分:2)
Swagger配置使用应用程序前启动钩子,因此您无需显式调用SwaggerConfig.Register()
。否则,Register
方法将被调用两次。
[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]
答案 2 :(得分:0)
我通过从App_Start文件夹中删除SwaggerConfig.cs文件解决了该问题,因为我已经手动创建了它。 看一下此链接,这里还有更多有用的信息:
A route named 'DefaultApi' is already in the route collection error
答案 3 :(得分:0)
就我而言,我添加了另一个项目作为参考,而另一个项目也大摇大摆。 我删除该引用并将所需代码移至新项目。