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

时间:2017-01-10 19:35:18

标签: azure azure-service-fabric

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

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

我正在与文档中解释的相同方式联系该服务,其中包括:

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

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

  1. 如果我从网址中删除MyService,我会收到404 SERVICE_DOES_NOT_EXIST
  2. 如果我更改了服务名称,我会收到404 SERVICE_DOES_NOT_EXIST
  3. 如果我使用其他端口,我会超时。
  4. 因此它看到该服务存在,但返回无效地址400错误。

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

1 个答案:

答案 0 :(得分:0)

我遇到了同样的错误,但是当我将UriScheme和Protocol属性添加到ServiceManifest.xml端点部分的端点时,它开始起作用了:

<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">