Легкий способ сработал для меня (вариант 1).

я есть служба WCF, которая размещается как служба Windows. Мы хотели бы включить конечную точку mex по тому же адресу (но с суффиксом / mex). Я пытался сделать это (безуспешно), используя следующую конфигурацию:

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

Когда он запускается, узел службы выдаетAddressAlreadyInUseException жалуется, что «на конечной точке IP уже есть прослушиватель 0.0.0.0:808». Это на самом деле имеет смысл для меня, потому что служба совместного использования портов открыла этот порт для обслуживанияMyService конечная точка вместе с любыми другими службами, запрашивающими общий доступ к этому порту на этом компьютере.

Похоже, что конечной точке mex нужен исключительный доступ к порту 808. Я могу обойти это, настроив конечную точку mex следующим образом:

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

Это означает, что конечная точка mex теперь имеет свой собственный эксклюзивный порт. Недостатком этого является то, что любой другой службе, которая хочет предоставить конечную точку mex, также потребуется уникальный порт для своей конечной точки mex. Это делает его очень непредсказуемым при поиске мекс-оконечных точек.

Есть ли способ заставить оконечную точку mex участвовать в совместном использовании порта?

Ответы на вопрос(1)

Ваш ответ на вопрос