What exactly do I need to do to host a WCF service in IIS 7.0 using netTcpBinding?

Hello Everyone:

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:

   - Read & Execute
   - List Folder Contents
   - Read

* Opened de ports 8100 and 8086 in the firewall.

* At IIS Manager/ Actions / Bindings the following bindings are set up:
  - http 8100:*  
  - net.tcp 8086:*

* 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 the 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:


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 
   <system.web>    
     <compilation debug="true" />
  </system.web>
  <system.serviceModel>
     <services>
        <service behaviorConfiguration="HelloWorld.HelloBehavior"
                 
           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:

<% @ServiceHost Service="HelloWorld.Hello" %>


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.








david-shmAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

apeterCommented:
Check below points.

1. You should have a MEX for tcp also. add this. <endpoint address="mextcp" binding="mexTcpBinding" contract="IMetadataExchange"/>
2. there is no port information available in your request.
3. Why you are having 2 base addresses for your service ? Are hosting your tcp service to the proper address as mentioned in the config file and also your client requesting the to the same URL ?

Same sample is tried by some one else also..check this link.
http://www.experts-exchange.com/Programming/Languages/.NET/Web_Services/Q_24045114.html
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
david-shmAuthor Commented:
Hello apeter,

I didn't know about the need to have the mex. I'll try that.
The port information is provided at both sides and it's correct. I've also hosted the service inside a console app. and everithing is Ok even with netTcpBinding. The problem is with IIS + netTcpBinding.
I have 2 base addresses because is easier to check if the service is up using http.
Thank you.
Best wishes.

David
0
david-shmAuthor Commented:
Hello apeter,

I don't know how to thank you!! If I only discoverd this web before It would have saved me 2 weeks of work.

The problem was the missing endpoint:

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

Thank you very much.

Best wishes,

David
0
10 Tips to Protect Your Business from Ransomware

Did you know that ransomware is the most widespread, destructive malware in the world today? It accounts for 39% of all security breaches, with ransomware gangsters projected to make $11.5B in profits from online extortion by 2019.

david-shmAuthor Commented:
Hi apeter,

I'd like to award the points to you, but the blue button doesn't apear under your response. Only under mines. How do I must proceed?
0
david-shmAuthor Commented:
This was the solution:

You should have a MEX for tcp also. add this.
0
apeterCommented:
Glad i could help.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Server Apps

From novice to tech pro — start learning today.