Hosting WCF service in IIS 7 (WAS) with net.tcp binding on TWO tcp ports

By default IIS 7 Web site has net.tcp binding with "808:" binding information string. If i add another net.tcp binding with "xxx:" exception occurs:

This collection already contains an address with scheme net.tcp. There can be at most one address per scheme in this collection. Parameter name: item

How can i solve this problem and listen my service at TWO ports?

Answers


Basically, in your service, you should be able to define any number of service endpoints on any number of ports.

There's two ways to do this:

  • define a base address and a relative address in your service endpoint
  • define the full address in each endpoint

If you do option #1, you'll have something like this:

<service name="YourService">
  <host>
    <baseAddresses>
      <add baseAddress="net.tcp://YourServer:5151/Services" />
    </baseAddresses>
  </host>
  <endpoint name="endpoint1"
            address="Service1"
            binding="netTcpBinding"
            contract="IYourService" />
  <endpoint name="endpoint2"
            address="Service2"
            binding="netTcpBinding"
            contract="IYourService" />
</service>

So in this case, you have two service endpoints for the same contract, and they'll be listening on URLs

net.tcp://YourServer:5151/Services/Service1

and

net.tcp://YourServer:5151/Services/Service2

You can have mulitple service endpoints, but only one base address.

The other option is to specify no base addresses and specify your full service address in the endpoint directly:

<service name="YourService">
  <endpoint name="endpoint1"
            address="net.tcp://YourServer:5151/Services/Service1"
            binding="netTcpBinding"
            contract="IYourService" />
  <endpoint name="endpoint2"
            address="net.tcp://YourServer:6868/Services/Service2"
            binding="netTcpBinding"
            contract="IYourService" />
</service>

In this case, since you're defining the whole address in the endpoint, you can pick two different TCP ports, one for each endpoint. This should work with no problem at all. You have two separate endpoints on two separate ports, both listening and being serviced by the same service class in the background.

Marc


I was trying to deply a WCF service to one of my web servers the other day and ran into a problem. I kept getting the following error message:p>

This collection already contains an address with scheme http. There can be at most one address per scheme in this collection.Parameter name: item

The problem didn't happen on my local machine but did on the web server making it a little difficult to figure out what was causing it. It happened on the server because my web server is in a shared hosting environment in which case the WCF service also needs to know the host header. To do this I navigated to in the web.config and added the following:

<serviceHostingEnvironment>
<baseAddressPrefixFilters>    
    <add prefix=http://MyHostHeader />
</baseAddressPrefixFilters>
</serviceHostingEnvironment>

Its me again.

This works with self host

 <baseAddresses>
            <add baseAddress="net.tcp://localhost" />
            <add baseAddress="net.tcp://localhost:12345" />
 </baseAddresses>

but with IIS7+WAS cause exception

Could not connect to net.tcp://localhost:12345/game2.svc. The connection attempt lasted for a time span of 00:00:02.0936160. TCP error code 10061: No connection could be made because the target machine actively refused it 127.0.0.1:12345.

The question was about IIS hosting environment


Need Your Help

ActionListener Event Handling

java exception exception-handling event-handling actionlistener

Coded for a checkbox that agrees to the Terms of Service and an accept and decline button.

Is there a light-weight, free XML/XML Schema editor available, with support for XML Schema catalogs and XML Validation?

xml xsd xml-validation xml-editor xmlcatalog

I have recently switched from working on Android in Eclipse to working on iOS apps in Xcode. I really liked the Eclipse XML editor interface (which has features like auto-complete, CDATA documentat...