我有一个使用ServiceStack和Swagger-UI的项目,我已经安装并使用v4.0.24安装了它,最近升级到v4.0.30。
最新的ServiceStack.Api.Swagger NuGet包:https://www.nuget.org/packages/ServiceStack.Api.Swagger/似乎没有像以前的包那样安装/ swagger-ui资源文件夹。
我在VS2013中尝试使用新的干净服务堆栈asp.net解决方案。从nuget添加了ServiceStack.Api.Swagger,并在AppHost.cs中启用了插件:
public override void Configure(Container container)
{
this.AddPlugin(new SwaggerFeature());
}
swagger-ui功能似乎工作正常,但似乎资源(index.html,js,css等)嵌入在dll中,并且需要以最小值编辑index.html配置Swagger-UI。
我错过了什么,或者这是最新NuGet包中的错误?
我已经编辑了我的swagger v4.0.24 html,css和js,我可以安全地从ServiceStack Git(https://github.com/ServiceStack/ServiceStack/tree/master/src/ServiceStack.Api.Swagger)中提取它们并手动添加/合并到我的解决方案中吗?
答案 0 :(得分:8)
检查ServiceStack Release Notes以了解每个版本中的更改内容是个不错的主意。
Swagger changes in v4.0.30的注释:
所有Swagger的静态资源都嵌入到单个 ServiceStack.Api.Swagger.dll 中,利用虚拟文件系统transparent support for Embedded Resources,使其更易于管理和升级Swagger作为一个独立的单位。
总之,您不再需要Swagger的资产,因为它们现在已嵌入到dll中。
虚拟文件系统上的文档显示了如何override embedded resources:
ServiceStack Virtual File System支持多个文件源位置,您可以通过将自己的自定义文件包含在与现有嵌入文件相同的位置来覆盖Swagger的嵌入文件。这使您可以通过简单地复制要自定义的/swagger-ui或/swagger-ui-bootstrap文件并将它们放在网站目录中的相同路径来替换内置的ServiceStack嵌入式资源,即:
/swagger-ui
/css
/images
/lib
index.html
/swagger-ui-bootstrap
index.html
swagger-like-template.html