Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / web / IIS

Convert existing BizTalk WCF service from “http” binding to “netTCP” binding

0.00/5 (No votes)
8 Jul 2014CPOL1 min read 10.5K  
Need to convert existing BizTalk WCF services with “http” bindings to “netTCP” bindings.

Introduction

Need to convert existing BizTalk WCF services with “http” bindings to “netTCP” bindings. <o:p>

Background<o:p>

After the introduction of WAS (Windows Process Activation Service) with IIS 7.0 (and later versions) it is possible to for IIS  to provides support for other protocols besides HTTP, such as TCP,MSMQ and Named Pipes etc.  So by making use of this feature we can host netTCP WCF services also on IIS.

If the BizTalk receive location already configured with WCF-Service (with http bindings) and if we need to convert it to netTCP bindings . Then after following below steps we can do so.

Solution

We assume that existing webserives are WCF services with BasicHttpBindings. Now we need to concert then to netTCPBindings. Following are the steps to carry out this.

  1. Following two services should be running.
  1. Net.Tcp Listener Adapter
  2. Net.Tcp Port Sharing Service

 

Image 1

 

    2.  Modify Web.config files of services.

  1. Open web.config file of service (which is currently on http binding).
  2. Add following lines under 
Configuration --> system.serviceModel--> bindings
<netTcpBinding>

        <binding name="NetTcpBinding_MyTestService" closeTimeout="00:01:00"

            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"

            transactionFlow="false" transferMode="Streamed" transactionProtocol="OleTransactions"

            hostNameComparisonMode="StrongWildcard" listenBacklog="10"

            maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="100"

            maxReceivedMessageSize="2147483647">

          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"

               maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 

          <reliableSession ordered="true" inactivityTimeout="00:10:00"

              enabled="false" />

          <security mode="None">

            <transport clientCredentialType="Windows" protectionLevel="None" />

            <message clientCredentialType="Windows" />

          </security>

        </binding>

</netTcpBinding>
  1. Add following lines under
Configuration --> system.serviceModel--> client

 

<endpoint address="net.tcp://localhost/TestServices/MyTestService.svc"

                binding="netTcpBinding" bindingConfiguration="NetTcpBinding_MyTestService"

                contract="TestServiceProxy.MyTestService"

name="NetTcpBinding_MyTestService ">

       

</endpoint>
  1. Save web.config file.

 

    3.  Enable net.tcp protocol on service by doing following steps.

  1. Navigate to Service and open Advance Settings.
  2. On field “Enabled Protocals” write “http,net.tcp” as shown below.

Image 2

   4. BizTalk Server change with netTCP serice.

  1. Add host instance to WCF-netTCP adapter handler (Send and Receive both). If not exists.

Image 3

     b.  Update BizTalk receive location.

Update Configuration from

<a href="http://localhost/TestServices/MyTestService.svc">http://localhost/TestServices/MyTestService.svc</a>

to

net.tcp://localhost/TestServices/MyTestService.svc  

       as shown below 

Image 4

 5.  Enable BizTalk Receive location

 6.  Now try to browse the service, it should be running.

<o:p>

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)