首页 文章

通过远程代理联系服务结构无状态服务时FABRIC_E_INVALID_ADDRESS

提问于
浏览
4

我在外部联系我的无状态服务时收到“FABRIC_E_INVALID_ADDRESS”400错误请求 .

我完全按照本文中的说法设置了反向代理:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reverseproxy

我以与文档中解释相同的方式联系服务,其中:

http://clustername.com:19008/MyApp/MyService

我相当有信心反向代理正在按预期工作,因为端口19008从服务结构返回响应 . 也:

  • 如果我从URL中剥离MyService,我会收到404 SERVICE_DOES_NOT_EXIST

  • 如果我更改了服务名称,我会收到404 SERVICE_DOES_NOT_EXIST

  • 如果我使用另一个端口,我会超时 .

因此它看到服务存在,但返回无效地址400错误 .

我可以利用哪种诊断方法?这个问题的主要问题是我必须要做的就是400 FABRIC_E_INVALID_ADDRESS,除了没有来自MSDN的描述的错误代码列表之外,它不会产生谷歌搜索结果 . 响应标头中没有其他内容 .

1 回答

  • 0

    我有相同的错误,但当我将UriScheme和Protocol属性添加到ServiceManifest.xml endpoints 部分中的 endpoints 时,它开始工作:

    <Endpoint Name="Test1TypeEndpoint" UriScheme="http" Protocol="http" />
    

    当我使用Guest Containers进行部署时,只有在ApplicationManifest.xml的ServiceManifestImport部分添加一个Policiy,说明docker容器公开的端口时,它才会起作用:

    <ServiceManifestImport>
      <ServiceManifestRef ServiceManifestName="Test1Pkg" ServiceManifestVersion="1.0.0" />
      <ConfigOverrides />
      <Policies>
        <ContainerHostPolicies CodePackageRef="Code">
          <PortBinding ContainerPort="80" EndpointRef="Test1TypeEndpoint" />
        </ContainerHostPolicies>
      </Policies>
    </ServiceManifestImport>
    

    CodePackageRef属性必须与ServiceManifest.xml的CodePackage名称匹配:

    <CodePackage Name="Code" Version="1.0.0">
    

相关问题