首页 > 解决方案 > 在 aspnetboilerplate 中将 API 控制器添加到我的主机项目时,Swagger 中断

问题描述

我从https://aspnetboilerplate.com/Templates下载了一个新的 .Net Core MVC 项目模板,设置了所有内容(数据库和恢复的 nuget 包)并运行了 Host 应用程序。一切都很好,因为我让 Swagger UI 运行起来并且可以看到所有标准服务。

然后我继续在 Host 应用程序中创建一个简单的 API 控制器:

[Route("api/[controller]")]
[ApiController]
public class FooBarController : MyAppControllerBase
{
    public string HelloWorld()
    {
        return"Hello, World!";
    }
}

然后 Swagger 无法加载 API 定义:

Fetch error
Internal Server Error http://localhost:21021/swagger/v1/swagger.json

如果我删除RouteandApiController属性,Swagger 会再次工作,但不会显示我的新控制器。我可以通过访问它来访问它,http://localhost:21021/foobar/helloworld这可能很好,但我希望它出现在 Swagger UI 中。

我错过了什么吗?

标签: swaggerabp

解决方案


这就是您应该如何在“配置(IApplicationBuilder 应用程序,IHostingEnvironment env)”方法中配置 Swagger。

#region Swagger COnfiguration
app.UseSwagger();
// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), 
// specifying the Swagger JSON endpoint.
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("swagger/v1/swagger.json", "Your class name");
    c.RoutePrefix = string.Empty;
});
#endregion

这将是您的配置服务设置为招摇。

services.AddSwaggerGen(config =>
{
    config.SwaggerDoc("v1", new Info
    {
        Title = "Title Here",
        Version = "v1"
    });
});

推荐阅读