swagger - 在 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
如果我删除Route
andApiController
属性,Swagger 会再次工作,但不会显示我的新控制器。我可以通过访问它来访问它,http://localhost:21021/foobar/helloworld
这可能很好,但我希望它出现在 Swagger UI 中。
我错过了什么吗?
解决方案
这就是您应该如何在“配置(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"
});
});
推荐阅读
- javascript - 将一个数组推送到另一个数组
- python - 使用 python 请求获取 Web 资源的大小
- python - 如何生成多个*不同的*随机数?
- docker - 如何释放主机上的内存/空间?Docker 工作区
- networking - 在连续子网上定义路由的正确方法是什么?
- shared-memory - 使用“shm_open”和“ftruncate”分配的共享内存与指定不符
- c# - 部署在 CI/CD 中的 C#/WPF 桌面应用程序 azure devops 到客户端桌面机器
- swift - 使课程开放,但内部
- aws-cdk - 在 cdk 中使用新的 s3notifications.LambdaDestination 时的循环引用
- java - 在带有 MVC REST API 的 SpringBoot 项目中返回 406 响应