Sunday, May 1, 2011

Why can't I connect to a WCF service with net.tcp but i can with http?

I have a WCF service running on the IIS with a ServiceHostFactory. It's running fine with the WSHttpBinding but because of the speed and everything being on the same network (no firewalls) i want to speed up things a bit using the NetTcpBinding instead.

When i try to do that i get this error:

Could not connect to net.tcp://zzz.xxx.yyy/MyService.svc.
The connection attempt lasted for a time span of 00:00:01.0464395.
TCP error code 10061: No connection could be made because the target machine
actively refused it x.x.x.x:808.

I'm using SecurityMode.None just to make sure that is not screwing me also i tried either of these on two different tries:

binding.Security.Message.ClientCredentialType = MessageCredentialType.None;
binding.Security.Message.ClientCredentialType = TcpClientCredentialType.Windows;,

Also i should point out, that i'm pulling quite a lof of data from one of the service calls, so i also put these (both on the http and the tcp attempts - setting maxMessageSize to 1000000)

binding.MaxReceivedMessageSize = maxMessageSize;
binding.ReaderQuotas.MaxArrayLength = maxMessageSize;

It should be pretty easy getting it to work, so what am I missing?

UPDATE: I added the TCP port 808 to the website identity and tried again. Now i get this error:

You have tried to create a channel to a service that does not support .Net
Framing. It is possible that you are encountering an HTTP endpoint.
From stackoverflow
  • Could it be something as simple as your firewall rules on the service host disallowing port 808?

    Per Hornshøj-Schierbeck : I just double checked and there are no firewalls blocking internal traffic, but thanks.
  • Check out this post on enabling non-HTTP bindings in IIS 7.0. By default, you have to explicitly enable net.tcp in IIS 7.0.

    Hope this helps.

    UPDATE:

    Saw your comment - unfortunately, net.tcp is not supported in IIS 6.0. Check out this link which details the supported WCF bindings for various hosts (including self-hosting, WAS, and IIS). Looks like only HTTP bindings work in IIS 6.0.

    Per Hornshøj-Schierbeck : The service is hosted on IIS6 though :(
    David Mohundro : Revised my answer... looks like IIS6 doesn't support anything but HTTP. I'm in the same boat here at work - we're stuck on Win2003 for now :(
  • If you are using Vista, then ensure the WAS and Net.Tcp Listener Adapter Services are running.

    Andreas Grech : +1 That Net.Tcp Listener Adapter Service got turned off for some reason :/ cheers.
  • Did uou find an answer for this? I have a similar problem.

    Per Hornshøj-Schierbeck : Well... check out the checked post by David Mohundro - you have to upgrade your IIS or you're stuck with http - or ofcourse host it outside IIS...
  • Once i start Net.Tcp Listener Adapter Service, service is working fine for me.

0 comments:

Post a Comment

Note: Only a member of this blog may post a comment.