WCF Windows Service. Can connect locally, but not remotely

nitefrog picture nitefrog · Aug 14, 2010 · Viewed 21.1k times · Source

I spent two days trying to figure this out and I am stumped. I have a WCF servers running as a service on Windows. A client can connect to it on the same machine, but as soon as I move try to connect to the service from another machine I cant.

So if the client and host are on the same machine, no problems. If the Host and Client are on separate machines I get exceptions errors.

Here is the weird part, I can use the svcutil to generate the app config and proxy.cs files from a remote machine, but as soon as I call the function it spits errors.

Could not connect to net.tcp://ipaddress:port/Service1. TCP Error code 10061. NO connection could be made because the target machine actively refused it.

If I call it from the same machine Host / Client no errors.

Any ideas?

Updated:

Here is the service end point settings.

<system.serviceModel>
    <services>
        <service behaviorConfiguration="Service1Behavior" name="WcfServiceLibrary1.Service1">
            <endpoint address="net.tcp://192.168.1.75:8523/Service1" binding="netTcpBinding"
                contract="WcfServiceLibrary1.IService1" />
            <endpoint address="net.tcp://192.168.1.75:8523/mex" binding="mexTcpBinding"
                contract="IMetadataExchange" />
            <host>
                <baseAddresses>
                    <add baseAddress="net.tcp://192.168.1.75:8523/" />
                </baseAddresses>
            </host>
        </service>
    </services>
    <bindings>
        <netTcpBinding>
            <binding name = "TcpBindingConfiguration">
                <security mode="None"/>
            </binding>
        </netTcpBinding>
    </bindings>
    <behaviors>
        <serviceBehaviors>
            <behavior name="Service1Behavior">
                <serviceMetadata />
            </behavior>
        </serviceBehaviors>
    </behaviors>
</system.serviceModel>

I have tried everything.

Any ideas?

Again is the client and host are on the same machine everything is fine, as soon as I put the client on a different computer, no dice...

I have never had this much headache with network programming back in the day...

Thanks

Answer

Jay picture Jay · Aug 14, 2010

If Windows Firewall is enabled on the host machine, try disabling it (you can get there through Control Panel). If it works then, you've found the culprit. You'll need to add an exception for your service in the firewall configuration and reenable it.

Same holds if you are using any other 3rd party firewall software, as is often bundled with antivirus software.

edit:

To set no security over TCP, you can use the constructor in code:

var binding = new NetTcpBinding(SecurityMode.None);

or you can do it in the configuration XML:

<netTcpBinding>
    <binding name="myTcpBinding">
        <security mode="None" />
…