在Abp中集成Swagger UI功能
1.安裝Swashbuckle.Core包
通過NuGet將Swashbuckle.Core包安裝到WebApi項目(或Web項目)中。
2.為WebApi方法添加注釋,並生成xml
- 在xxx.Application項目的接口聲明文件中為各接口方法添加注釋,如下圖:
- 編輯xxx.Application項目屬性,設定在輸出時生成XML文檔文件
3.在xxx.WebApi項目中配置Swagger
修改xxxWebApiModule類,添加ConfigureSwaggerUi()方法,並在Initialize()方法的最后調用它。
注意:要添加對Abp.Configuration.Startup、Swashbuckle.Application命名空間的引用。
另外,不調用ResolveConflictingActions()方法來提供沖突解決辦法將有可能遇到500錯誤。
using System.Linq;
using Abp.Configuration.Startup;
using Swashbuckle.Application;
[DependsOn(typeof(AbpWebApiModule), typeof(OrganizationApplicationModule))]
public class OrganizationWebApiModule : AbpModule
{
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
DynamicApiControllerBuilder
.ForAll<IApplicationService>(typeof(OrganizationApplicationModule).Assembly, "csci")
.Build();
//配置跨域
GlobalConfiguration.Configuration.EnableCors(new System.Web.Http.Cors.EnableCorsAttribute("*", "*", "*"));
//配置輸出json時不使用駱駝式命名法,按對象屬性原名輸出
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
//集成Swagger UI
ConfigureSwaggerUi();
}
private void ConfigureSwaggerUi()
{
var xmlFile = string.Format("{0}/bin/{1}.Application.xml", System.AppDomain.CurrentDomain.BaseDirectory, this.GetType().Namespace);
Configuration.Modules.AbpWebApi().HttpConfiguration
.EnableSwagger(c =>

{
c.SingleApiVersion("v1", this.GetType().Namespace);
c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
if (System.IO.File.Exists(xmlFile)) { c.IncludeXmlComments(xmlFile); }
})
.EnableSwaggerUi();
}
}
4.測試
運行WEB項目,在瀏覽器中訪問{項目網址}/swagger,即可見到動態生成的WebApi接口,並可以直接調試。
注:如果見不到[Try it out!]按鈕,點一下"Expand Operations"鏈接即可。