我目前正在尝试让我的端点在 Swagger 上为其基本路径(/my-application/)添加前缀。 我正在使用 Swashbuckle 和 Swashbuckle.Core v5.6.0 运行 .NET 4.7.2 应用程序。 /my-application/ 是应用程序的 IIS 虚拟目录。
所以可以说我的所有端点都可以通过 my-website.com/my-application 访问 我希望 Swagger 显示端点的 /my-application/Activity,而不仅仅是 /Activity。
当前自动生成的 .json 确实为以下属性设置了正确的值: “主机”:“my-website.com”, “basePath”:“/我的应用程序” 并且“尝试一下”部分确实可以正确工作。
目前 Swagger 的外观如下: 这就是我希望 Swagger 的外观: Swagger配置:
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.PrettyPrint();
c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
})
.EnableSwaggerUi(c =>
{
});
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.RootUrl(req => BuildRootUri(req));
c.SingleApiVersion("v1", "WebApi");
})
.EnableSwaggerUi();
}
public static string BuildRootUri(HttpRequestMessage req)
{
var virDir = System.Configuration.ConfigurationManager.AppSettings["VirtualDirectory"];
var scheme = req.RequestUri.Scheme;
var host = req.RequestUri.Authority;
return $"{scheme}://{host}{virDir}";
}
您可以在 web.config 文件中添加虚拟目录。
您可以按如下方式重定向来自家庭控制器的请求...
public ActionResult Index ()
{
var virDir = System.Configuration.ConfigurationManager.AppSettings["VirtualDirectory"];
return new RedirectResult($"{virDir}swagger");
}