Ich versuche, eine Umleitung zu arbeiten, um/Docs anstelle von/swagger-ui zu verwenden. Ich habe den Handler implementiert (im Prinzip kopiert von OpenApiFeature.cs), um den/docs-Pfad und den Server/swagger-ui-Inhalt abzufangen, aber er funktioniert nur mit/docs /, not/docs. Mit/docs, die alle die CSS und JS-Dateien an die Wurzel lösen anstelle des/docs-Ordner (Host/blah.js statt Host/docs/blah.js):ServiceStack globale Anfrage Umleitung
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;
});
Um dies zu beheben, dachte ich, ich konnte einfach/docs umleiten zu/docs /:
case "/docs":
return new RedirectHttpHandler() {RelativeUrl = "/docs/"};
Das Problem mit diesem ist es stuft auch die Verbindung von https irgendwie http. Da es sich um eine relative Weiterleitung handelt, bin ich mir nicht sicher, was dort vor sich geht. Gibt es einen besseren Weg, dies zu implementieren? Um es noch schlimmer zu machen, funktioniert es auf meiner lokalen Dev-Maschine, aber nicht in unserer Testumgebung. Beide laufen als eigenständige SS. Natürlich gibt es eine andere Einstellung, aber ich kann mir nicht wirklich vorstellen, was das verursachen würde.
Ich vermisse wahrscheinlich etwas Dummes, aber ich kann es einfach nicht finden. Gibt es eine neuere Einstellung, um dies einfacher out-of-the-box zu machen? Irgendwelche Ideen?