我试图让 Swagger 与 ServiceStack 一起工作。Web 服务器位于防火墙后面,可从 Internet (my.domain.de:80) 访问。然后将请求转发到端口 8070 上的 Web 服务器。
在访问 swagger 页面时,它能够访问/api/resources
和检索 ServiceMethods 列表,但随后无法检索到操作列表。
当我使用提琴手检查结果时,我发现他不见了,因此大摇大摆地尝试从而不是/api
获取操作列表。/resources/ServiceName
/api/resources/ServiceName
Swagger-UI 给我以下错误消息:
无法从路径http://my.domain.de/resource/ServiceName读取 api 'ServiceName' (服务器返回 Not Found)
招摇配置:
discoveryUrl:"../../api/resources",
服务栈配置:
WebHostUrl = "http://my.domain.de"
更新(2)
如果我没有在 ServiceStacks 资源服务的初始响应中设置 WebHostUrl BasePath 包含来自 webserver 的端口号basePath=http://my.domain.de:8060/api
。但是在防火墙上这个端口是不可访问的,我们也不希望它是可访问的。
web.config
:
<location path="api">
<system.web>
<httpHandlers>
<add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />
</httpHandlers>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
</handlers>
</system.webServer>
</location>
更新
在初始响应中,基本路径是:
basePath=http://my.domain.de
my.domain.de 我的意思是一个真实世界的 url,它只是没有端口、url-path、查询字符串或片段的主机名(我实际上检查了维基百科的正确名称;)
我在 StackOverflow 上找到了另一个问题,但它对我没有帮助。 带有服务堆栈的招摇不工作
如何让 ServiceStack/Resources Service/api
为其返回的 ServiceList 添加?