Не найдена совместимая ошибка TransportManager для службы net.tcp WCF (конечная точка MEX) в IIS 7

Я создал службу со следующей конфигурацией

<system.serviceModel>

<bindings>
  <netTcpBinding>

    <binding name="CommonUserNameBinding" maxConnections="1000" portSharingEnabled="True">
      <security mode="None">
      </security>
    </binding>

  </netTcpBinding>

</bindings>


<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

<services>
  <service name="MyNameSpace.SimplePluginService" behaviorConfiguration="CommonBehavior">

    <endpoint address="UserName"
              binding="netTcpBinding" 
              bindingConfiguration="CommonUserNameBinding" 
              name="MyNameSpace.Contracts.ISimplePluginServiceUserName" 
              contract="MyNameSpace.Contracts.ISimplePluginService">
      <identity>
        <dns value="WCfServer" />
      </identity>
    </endpoint>

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

    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost:5812/Service/SimplePluginService.svc"/>
      </baseAddresses>
    </host>

  </service>
</services>


<behaviors>

  <serviceBehaviors>
    <behavior name="CommonBehavior">
      <serviceMetadata httpGetEnabled="True" policyVersion="Policy15" />
      <serviceDebug includeExceptionDetailInFaults="True"/>
        <serviceCredentials>

        <userNameAuthentication 
            userNamePasswordValidationMode="Custom"
            customUserNamePasswordValidatorType="Megatec.MasterTourService.CustomUserNameValidator, Megatec.MasterTourService"/>

        <serviceCertificate
            findValue="WCFServer"
            storeLocation="LocalMachine"
            storeName="My"
            x509FindType="FindBySubjectName"/>

        <clientCertificate>
          <authentication certificateValidationMode="PeerTrust" />
        </clientCertificate>

      </serviceCredentials>  
    </behavior>
  </serviceBehaviors>

</behaviors>

</system.serviceModel>

</configuration>

Я отлаживаю его на локальном IIS 7.5. Сайт и приложение имеют «net.tcp» в списке активных протоколов.

Привязка IIS для net.tcp — 5812:*

у меня следующая ошибка

Не найден совместимый TransportManager для URI 'net.tcp://myComputerName:5812/Service/SimplePluginService.svc/mex'. Это может быть связано с тем, что вы использовали абсолютный адрес, который указывает за пределами виртуального приложения, или параметры привязки конечной точки не соответствуют тем, которые были установлены другими службами или конечными точками. Обратите внимание, что все привязки для одного и того же протокола должны иметь одинаковые настройки в одном приложении.

Я прочитал следующие вопросы: Нет совместимой ошибки TransportManager, но у меня это не работает .

ОБНОВЛЕНИЕ. Проблема связана с конечной точкой mex.

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

Согласно моим тестам, это не зависит от поведения и режима безопасности (в разделе привязки).

Итак, что не так с конечной точкой mex?


person Sir Hally    schedule 27.07.2012    source источник
comment
На всякий случай кто-то вроде меня попадет сюда: stackoverflow.com/questions/3689008/ свойство wcf-maxconnections   -  person Rodrigo    schedule 20.09.2016


Ответы (3)


В моем случае помогает установка maxConnections для netTcpBinding на 10.

Я не знаю, почему... Было бы здорово, если бы кто-нибудь объяснил. :)

person Eugene    schedule 08.01.2014

Оставьте свойство address="UserName" вашего тега endpoint, поскольку оно будет настроено в консоли IIS. Само сообщение вводит в заблуждение, но в сочетании с IIS не следует определять адрес.

person Matten    schedule 11.01.2013

Я не уверен, почему, но установка maxConnections для привязки привела к тому, что наша служба не активировалась с той же ошибкой, что и вы (на конечной точке mex).

Удаление атрибута maxConnection полностью исправило это для нас.

person Drew Delano    schedule 15.03.2016