Como forçar um ponto de extremidade net.tcp mex (mexTcpBinding) a participar do compartilhamento de portas?

Eu tenho um serviço WCF que é hospedado como um serviço do Windows. Gostaríamos de habilitar um ponto final mex no mesmo endereço (mas com o sufixo '/ mex'). Eu tenho tentado fazer isso (sem êxito) usando a seguinte configuração:

<system.serviceModel>

  <services>
    <service
      name="MyCompany.MyService"
      behaviorConfiguration="defaultServiceBehavior">

      <host>
        <baseAddresses>
          <add baseAddress="net.tcp://localhost"/>
        </baseAddresses>
      </host>

      <endpoint
        address="MyService"
        binding="netTcpBinding"
        contract="MyCompany.IMyService"
        bindingConfiguration="netTcpBindingConfig"
        />

      <endpoint
        address="MyService/mex"
        binding="mexTcpBinding"
        contract="IMetadataExchange"
        />

    </service>
  </services>

  <behaviors>
    <serviceBehaviors>
      <behavior name="defaultServiceBehavior">
        <serviceMetadata />
      </behavior>
    </serviceBehaviors>
  </behaviors>

  <bindings>
    <netTcpBinding>
      <binding name="netTcpBindingConfig" portSharingEnabled="true" />
    </netTcpBinding>
  </bindings>

</system.serviceModel>

Quando executado, o host do serviço lança umAddressAlreadyInUseException reclamando que "Já existe um ouvinte no ponto de extremidade IP 0.0.0.0:808". Isso realmente faz sentido para mim porque o serviço de compartilhamento de portas abriu essa porta para atender aoMyService ponto final junto com qualquer outro serviço que solicite o compartilhamento dessa porta nesta máquina.

Portanto, parece que o endpoint mex deseja acesso exclusivo à porta 808. Eu posso contornar isso ajustando o endpoint mex da seguinte forma:

<endpoint
  address="net.tcp://localhost:818/MyService/mex"
  binding="mexTcpBinding"
  contract="IMetadataExchange"
  />

Isso significa que o ponto final mex agora tem sua própria porta exclusiva. A desvantagem disso é que qualquer outro serviço que queira expor um ponto final mex também precisará de uma porta exclusiva para o ponto final mex. Isso torna muito imprevisível ao procurar pontos de extremidade mexicanos.

Existe uma maneira de forçar o endpoint mex a participar no compartilhamento de portas?

questionAnswers(1)

yourAnswerToTheQuestion