扬鞭无法检索ServiceStack资源服务业务

问题描述 投票:4回答:1

我试图让扬鞭与ServiceStack工作。该网站服务器位于防火墙后面,并从互联网(my.domain.de:80)进行访问。然后请求转发到Web服务器上的端口8070。

当来访的招摇页面就能够访问/api/resources和检索ServiceMethods的名单,但随后无法检索操作的列表。

当我使用Fiddler检查结果我看到他/api缺失使招摇试图从/resources/ServiceName而不是/api/resources/ServiceName获得的操作列表。

昂首阔步-UI给我下面的错误信息:

无法读取路径http://my.domain.de/resource/ServiceName API“服务名称”(服务器返回未找到)

SwaggerConfig:

discoveryUrl:"../../api/resources",

ServiceStack配置:

WebHostUrl = "http://my.domain.de"

更新(2)如果我不设置WebHostUrl从ServiceStacks资源服务的初始响应的基本路径包含了从网络服务器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路径,查询字符串或片段的主机名(我acctually检查维基百科的正确名称;)

我发现在计算器上这个其他的问题,但它并没有帮助我。 Swagger with Service Stack not working

我怎样才能得到ServiceStack /资源服务以添加/api其返回ServiceList?

c# .net servicestack swagger swagger-ui
1个回答
1
投票

OP的同事在这里。

我花了一些时间来研究这个问题,我相信这个问题是在ServiceStack的招摇支持的错误。

看这里:

https://github.com/ServiceStack/ServiceStack/pull/800

报价:“当设置,使用webhosturl在招摇和元数据链接的基础URL”

这是正确实现的元数据,但不招摇。

在SwaggerResourcesService.cs线52与覆盖,如果它被设置在WebHostUrl中的BaseURL,但作为元数据的实施确实不符合实际路径结合:

https://github.com/sneal/ServiceStack/blob/6b33f5c2417587b5983c611b4bf8a5d42d88d890/src/ServiceStack.Api.Swagger/SwaggerResourcesService.cs

© www.soinside.com 2019 - 2024. All rights reserved.