【发布时间】:2017-09-27 00:11:27
【问题描述】:
我正在尝试重定向以使用 /docs 而不是 /swagger-ui。我实现了处理程序(基本上从OpenApiFeature.cs 复制)来捕获/docs 路径和服务器/swagger-ui 内容,但它只适用于/docs/,而不适用于/docs。使用 /docs,所有 css 和 js 文件都会解析到根目录而不是 /docs 文件夹(host/blah.js 而不是 host/docs/blah.js):
appHost.CatchAllHandlers.Add((httpMethod, pathInfo, filePath) =>
{
IVirtualFile indexFile = null;
switch (pathInfo.ToLower())
{
case "/docs":
case "/docs/":
case "/docs/default.html":
indexFile = appHost.VirtualFileSources.GetFile("/swagger-ui/index.html");
break;
default:
indexFile = null;
break;
}
if (indexFile != null)
{
var html = indexFile.ReadAllText();
return new CustomResponseHandler((req, res) =>
{
res.ContentType = MimeTypes.Html;
return html;
});
}
return pathInfo.StartsWithIgnoreCase("/docs") ? new StaticFileHandler(pathInfo.ReplaceFirst("/docs", "/swagger-ui")) : null;
});
为了解决这个问题,我想我可以将 /docs 重定向到 /docs/:
case "/docs":
return new RedirectHttpHandler() {RelativeUrl = "/docs/"};
问题在于它还会以某种方式将连接从 https 降级为 http。由于这是一个相对重定向,我不确定那里发生了什么。有没有更好的方法来实现这一点?更糟糕的是,它适用于我的本地开发机器,但不适用于我们的测试环境。两者都运行独立的SS。显然有一些不同的设置,但我真的无法想象是什么原因造成的。
我可能错过了一些愚蠢的东西,但我就是找不到。是否有更新的设置可以使这更容易开箱即用?有什么想法吗?
【问题讨论】:
标签: c# redirect servicestack swagger-ui