I've been trying for more than a week without any success at all, to host a very simple HelloWorld-like wcf service using netTcpBinding.
With http, everything is ok. I can access my service even from a remote machine. But with tcp problems arise.
I have performed all the steps I'm supposed to, in order to host my service in WAS:
.Net 3.0 Features are enabled, including http and non-http Activation
I have granted 'Network Service' and 'IIS_IUSRS' the following permissions to the folder containing the site:
Opened de ports 8100 and 8086 in the firewall.
At IIS Manager/ Actions / Bindings the following bindings are set up:
At IIS Manager/ Manage Web Site / Advanced Settings, both, http and net.tcp protocols are enabled.
The original problem I had was that I was able to reach the service via http but when trying with tcp I got the following error:
"The message could not be dispatched because de service at the endpoint addres 'net.tcp://myDomain/HelloWorld.Hello.svc' is unavailable for the protocol address."
I found a post in this site whose author had the same problem and It was solved by reinstalling .net 3.0 features. So I tryed that. I also tryed to reinstall IIS 7.0 just in case. Now, the situation is worse than it was at the begining. If I configure an endpoint with tcpBinding in my Web.Config I can't even reach my service at it's http address using IE!! I get the following message:
Could not find a base address that matches scheme net.tcp for the endpoint with binding NetTcpBinding. Registered base address schemes are [http].
The Web.Config file is as follows:
name="HelloWorld.Hello">
<host>
<baseAddresses>
<add baseAddress="http://myDomain:8100/HelloWorld/" />
<add baseAddress="net.tcp://myDomain:8086/HelloWorld/" />
</baseAddresses>
</host>
<endpoint address=""
binding="wsHttpBinding"
contract="HelloWorld.IHello"
bindingConfiguration="httpInseguro">
</endpoint>
<endpoint address=""
binding="netTcpBinding"
contract="HelloWorld.IHello"
bindingConfiguration="netTcpInseguro">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name ="httpInseguro">
<security mode ="None" />
</binding>
</wsHttpBinding>
<netTcpBinding>
<binding name ="netTcpInseguro">
<security mode ="None" />
</binding>
</netTcpBinding>
</bindings>
and the .svc file is like this:
Could anyone please give me a clue about what's going on? I really don't know what else to do. This is being a real headacke becasuse using http binding is not an option. Thanks in advance.
You'll need to enable the TCP hosting in WAS by calling appcmd.exe
:
%windir%\system32\inetsrv\appcmd.exe set site
"Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='*']
Check out the MSDN documenation or Michele Leroux Bustamante's article on this topic - it contains all the info you'll need.
Marc