Хорошо, у меня есть действительно простая служба WCF, которую я хотел бы разместить под IIS. Я включил «Активацию без Http Windows Communication Foundation», так что это не проблема. Я использую IIS 7,5 на компьютере под управлением Windows 7 с установленным .NET 4.0. Мой web.config выглядит так:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<services>
<service name="FirstWcfService.Service" behaviorConfiguration="ServiceBehavior">
<!-- Service Endpoints -->
<endpoint address="" binding="netTcpBinding" contract="NetTcpServiceTest.IMySuperService"
bindingConfiguration="tcpbinding"/>
<endpoint address="mextcp" binding="mexTcpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<!-- To avoid disclosing metadata information, set the value below to false
and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes,
set the value below to true. Set to false before deployment to avoid
disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<netTcpBinding>
<binding name="tcpbinding" portSharingEnabled="true">
<!--<security mode="None"></security>-->
<security mode="Transport">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign"/>
<message clientCredentialType="Windows"/>
</security>
</binding>
<binding name="mexTcpBinding" portSharingEnabled="true">
<security mode="None" />
</binding>
</netTcpBinding>
</bindings>
</system.serviceModel>
</configuration>
Служба размещается как приложение под названием «NetTcpServiceTest» на веб-сайте по умолчанию в IIS. Когда я пытаюсь добавить ссылку на net.tcp: //localhost/NetTcpServiceTest/MySuperService.svc/mextcp в visual studio, я получаю следующую ошибку:
Metadata contains a reference that cannot be resolved: 'net.tcp://localhost/NetTcpServiceTest/MySuperService.svc/mextcp'.
The message could not be dispatched because the service at the endpoint address 'net.tcp://localhost/NetTcpServiceTest/MySuperService.svc/mextcp' is unavailable for the protocol of the address.
If the service is defined in the current solution, try building the solution and adding the service reference again.
И ошибка в журнале событий:
An error occurred while trying to listen for the URL '/LM/W3SVC/1/ROOT/NetTcpServiceTest'. This worker process will be terminated.
Sender Information: net.tcp
Exception: System.ServiceModel.WasHosting.TcpAppDomainProtocolHandler/65824025
Process Name: System.ServiceModel.CommunicationException: The TransportManager failed to listen on the supplied URI using the NetTcpPortSharing service: .
Я также включил привязку для сайта и приложения. Кто-нибудь знает как это решить? Когда я искал его в Интернете, единственный ответ, который я нашел, состоял в том, чтобы переустановить IIS и .NET, но для меня это не похоже на реальное решение.