Я создал службу со следующей конфигурацией
<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?