Swashbuckle/NSwag是否支持为ASP.Net Web API 2生成OpenAPI 3规范?
关于.NET Framework 4.7 Web API 2生成OpenAPI 3.0规范的问题解答
我来给你理清楚这两个工具的实际情况:
Swashbuckle的现状
针对.NET Framework 4.7的ASP.NET Web API 2,官方的Swashbuckle.WebApi包原生仅支持Swagger 2.0,并没有官方提供的OpenAPI 3.0支持版本。Swashbuckle的OpenAPI 3.0能力主要集中在Swashbuckle.AspNetCore系列包中,而这些包是专为.NET Core/.NET 5+设计的,和传统.NET Framework的Web API 2并不兼容。所以你之前用Swashbuckle只能生成Swagger 2.0的文件是正常现象,目前没有官方途径让它输出OpenAPI 3.0规范的文档。
NSwag的解决方案
NSwag是支持为.NET Framework 4.7的Web API 2生成OpenAPI 3.0规范的!你之前没成功大概率是配置不到位或者装错了包。
具体操作步骤:
- 安装正确的NuGet包:安装
NSwag.AspNet.WebApi(注意不要选针对Core的包) - 在项目的
App_Start文件夹下创建或修改SwaggerConfig.cs,添加如下配置:
using NSwag.AspNet.WebApi; using System.Web.Http; public static class SwaggerConfig { public static void Register(HttpConfiguration config) { var swaggerSettings = new SwaggerDocumentSettings { // 关键配置:指定生成OpenAPI 3.0规范 SchemaType = NJsonSchema.SchemaType.OpenApi3, Title = "你的API名称", Version = "v1", Description = "API的功能描述" }; // 启用Swagger文档生成 config.EnableSwagger(swaggerSettings); // 启用Swagger UI可视化界面 config.EnableSwaggerUi(); } }
- 在
Global.asax.cs的Application_Start方法中注册这个配置:
SwaggerConfig.Register(GlobalConfiguration.Configuration);
完成以上配置后,重新运行项目,访问Swagger UI或者直接请求/swagger/v1/swagger.json,就能得到符合OpenAPI 3.0规范的文档了。
内容的提问来源于stack exchange,提问作者Gireesh




