diff --git a/framework/src/Volo.Abp.Swashbuckle/Microsoft/Extensions/DependencyInjection/AbpSwaggerUIOptionsExtensions.cs b/framework/src/Volo.Abp.Swashbuckle/Microsoft/Extensions/DependencyInjection/AbpSwaggerUIOptionsExtensions.cs new file mode 100644 index 0000000000..b73cf8a7d0 --- /dev/null +++ b/framework/src/Volo.Abp.Swashbuckle/Microsoft/Extensions/DependencyInjection/AbpSwaggerUIOptionsExtensions.cs @@ -0,0 +1,30 @@ +using System; +using System.Text; +using System.Text.Json; +using Swashbuckle.AspNetCore.SwaggerUI; + +namespace Microsoft.Extensions.DependencyInjection; + +public static class AbpSwaggerUIOptionsExtensions +{ + /// + /// Sets the abp.appPath used by the Swagger UI scripts. + /// + /// The Swagger UI options. + /// The application base path. + public static void AbpAppPath(this SwaggerUIOptions options, string appPath) + { + var normalizedAppPath = NormalizeAppPath(appPath); + var builder = new StringBuilder(options.HeadContent ?? string.Empty); + builder.AppendLine(""); + options.HeadContent = builder.ToString(); + } + + private static string NormalizeAppPath(string appPath) + { + return string.IsNullOrWhiteSpace(appPath) ? "/" : appPath.Trim().EnsureStartsWith('/').EnsureEndsWith('/'); + } +} diff --git a/framework/src/Volo.Abp.Swashbuckle/wwwroot/swagger/ui/abp.js b/framework/src/Volo.Abp.Swashbuckle/wwwroot/swagger/ui/abp.js index 11cbe56803..da996ea6f5 100644 --- a/framework/src/Volo.Abp.Swashbuckle/wwwroot/swagger/ui/abp.js +++ b/framework/src/Volo.Abp.Swashbuckle/wwwroot/swagger/ui/abp.js @@ -2,11 +2,7 @@ var abp = abp || {}; (function () { /* Application paths *****************************************/ - - //Current application root path (including virtual directory if exists). - var baseElement = document.querySelector('base'); - var baseHref = baseElement ? baseElement.getAttribute('href') : null; - abp.appPath = baseHref || abp.appPath || '/'; + abp.appPath = abp.appPath || '/'; /* UTILS ***************************************************/ diff --git a/framework/src/Volo.Abp.Swashbuckle/wwwroot/swagger/ui/abp.swagger.js b/framework/src/Volo.Abp.Swashbuckle/wwwroot/swagger/ui/abp.swagger.js index db054056d1..e961f6bc2d 100644 --- a/framework/src/Volo.Abp.Swashbuckle/wwwroot/swagger/ui/abp.swagger.js +++ b/framework/src/Volo.Abp.Swashbuckle/wwwroot/swagger/ui/abp.swagger.js @@ -11,7 +11,7 @@ var abp = abp || {}; var oidcSupportedScopes = configObject.oidcSupportedScopes || []; var oidcDiscoveryEndpoint = configObject.oidcDiscoveryEndpoint || []; var tenantPlaceHolders = ["{{tenantId}}", "{{tenantName}}", "{0}"] - abp.appPath = configObject.baseUrl || abp.appPath; + abp.appPath = abp.appPath || "/"; var requestInterceptor = configObject.requestInterceptor; var responseInterceptor = configObject.responseInterceptor;